【发布时间】:2016-08-11 09:56:06
【问题描述】:
问题
我有两个 PSR-4 作曲家项目,我希望从一个类到另一个类,文件结构如下:
projectfoo
-public
--index.php
-src
--CompanyName
---Foo
----Foo.php
-composer.json
projectbar
-src
--CompanyName
---Bar
----Bar.php
-composer.json
composer.json 文件为 projectfoo 定义为(注意 repositories > type > path 依赖):
{
"name": "companyname/foo",
"require": {
"companyname/bar": "*"
},
"repositories": [
{
"type": "path",
"url": "../projectbar"
}
],
"autoload": {
"psr-4": {
"CompanyName\\": "src/CompanyName"
}
}
}
和项目栏为:
{
"name": "companyname/bar",
"version": "1.0.0",
"autoload": {
"psr-4": {
"CompanyName\\": "src/CompanyName"
}
}
}
运行 composer update 正确生成包含 companyname/foo 文件夹的供应商文件夹。
在 projectfoo 中的 index.php 我有:
require_once '../vendor/autoload.php';
$bar = new \CompanyName\Bar\Bar();
但是,当运行 \CompanyName\Bar\Bar 时未定义。
问题
为什么Bar 没有包含在 autoload.php 文件中?
我尝试过的
- 使用以下方法刷新自动加载文件:
composer installcomposer updatecomposer dump-autoload - 将供应商名称
CompanyName更改为其他名称。 - 查看
vendor\composer文件夹中的installed.json文件,bar 项目被列为:
#
{
"name": "companyname/bar",
"version": "1.0.0",
"version_normalized": "1.0.0.0",
"dist": {
"type": "path",
"url": "../companyname/bar",
"reference": "f35ed0ad82c8280db9b603712dd256074f99e196",
"shasum": null
},
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"CompanyName\\": "src/CompanyName",
}
}
}
- 奇怪的是,当将 autoload.php 文件引导到 phpunit 时,文件会正确自动加载,并且在我的测试类中可用。
【问题讨论】:
标签: php namespaces composer-php autoload