【问题标题】:Add local package to composers autoload.php将本地包添加到作曲家 autoload.php
【发布时间】:2019-03-17 03:16:40
【问题描述】:

我正在处理一个稍后想上传到 packagegist 的包。但现在,我只想在本地开发它。但是我找不到一种方法让作曲家自动加载我的包而不把它放在 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

【问题讨论】:

标签: php composer-php autoload


【解决方案1】:

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"
        }
    ]
}

【讨论】:

    【解决方案2】:

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

    有关详细信息,请参阅: https://getcomposer.org/doc/03-cli.md#dump-autoload

    【讨论】:

    • 此选项不起作用。该命令不显示任何错误,但也找不到我的本地类。我只是在我的www 目录中运行命令。
    【解决方案3】:

    将您的班级添加到vendor/composer/autoload_psr4.phpvendor/composer/autoload_classmap.php

    【讨论】:

    • 这些文件经常被覆盖。
    猜你喜欢
    • 1970-01-01
    • 2013-07-10
    • 2013-08-31
    • 2014-08-16
    • 1970-01-01
    • 2015-07-11
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多