将本地包添加到composer的autoload.php中


Add local package to composers autoload.php

我正在处理一个包,稍后我想把它上传到packagist。但现在,我只想在本地发展它。但是我找不到一种方法让composer自动加载我的包,而不把它放在Packagist中。

目前我的项目结构看起来像这样:

www/
  index.php
  composer.json
  composer.lock
  vendor/
    autoload.php
    acme/
      http/
        composer.json
        src/
          Request.php

我已经手动将我的acme文件夹放在vendor文件夹中。我还在acme/http文件夹中添加了另一个composer.json,内容如下:

{
    "name": "Acme/Http",
    "authors": [{
            "name": "Acme"
        }],
    "require": {
        "php": ">=5.3.0"
    },
    "autoload": {
        "psr-4": {
            "Acme''Http''": "src/"
        }
    }
}

现在,我现在如何添加我的"本地"项目作曲家autoload.php ?

acme/http放在vendor之外会更干净和清晰:

www/
  index.php
  composer.json
  composer.lock
  acme/
    http/
      composer.json
      src/
        Request.php
  vendor/
    autoload.php

然后在www/composer.json上使用repositories条目:

{
    "name": "foo/www",
    ...
    "require": {
        "acme/http": "*",
        ..
    },
    "repositories": [
        {
            "type": "path",
            "url": "./acme/http"
        }
    ]
}

运行composer dump-autoload更新自动加载器

更多信息见:https://getcomposer.org/doc/03-cli.md dump-autoload

添加您的class到vendor/composer/autoload_psr4.phpvendor/composer/autoload_classmap.php