Composer创建本地包

时间:2016-03-10 12:13:55

标签: php json composer-php

在我vendor目录中的项目中,我创建了一个名为Hello的新目录,并创建了一个名为HelloWorld.php的新类Hello\Test。然后在Hello的根目录中,我使用默认元数据(composer.jsonauthorlicensedesc)创建了required,并添加了自动加载PSR-4 Hello\\Test\\

那么我自动加载我的包后需要做什么呢。我查看了一些Symfony组件,它们的composer.json包和配置是相同的。

是否可以像这样从vendor自动加载我的本地包?

目录结构:

|-my_project
|-composer.json
|---vendor
|-------composer
|-------autoload.php
|-------Hello
|-----------composer.json
|-----------HelloWorld.php

./供应商/你好/ composer.json

{
  "name": "Zend/Hello",
  "description": "My test package",
  "license": "MIT",
  "authors": [
    {
      "name": "Zend Zend",
      "email": "test@example.com"
    }
  ],
  "autoload": {
    "psr-4": {
      "Hello\\Test\\": ""
    }
  }
}

我的HelloWorld.php类有namespace Hello\Test;index.php内{i} include 'vendor/autoload.php 和root composer.json

{
  "autoload": {
    "psr-4": {
      "": "src/",
      "Hello\\Test\\": "./vendor/Hello"
    }
  },
  "require": {
    "Hello/Test": "*"
  }

}

composer update

1 个答案:

答案 0 :(得分:4)

好!这么晚才回复很抱歉。 你只需要一个composer.json来完成这项工作。主项目目录中的那个。

尝试使用:

{
   "name": "Zend/Hello",
   "description": "My test package",
   "license": "MIT",
   "authors": [
      {
          "name": "Zend Zend",
          "email": "test@example.com"
      }
   ],
   "autoload": {
       "psr-4": {
           "Hello\\Test\\": "vendor/Hello"
       }
   }
}

你的HelloWorld.php文件应该是:

<?php

namespace Hello\Test;

class HelloWorld {

    // your methods goes here
}

运行一个composer self update以使最新的作曲家运行composer update,现在它应该被添加到你的vendor / composer / autoload_psr4.php文件中