composer autoloading来自不同目录的子命名空间

时间:2016-07-26 20:33:07

标签: php namespaces composer-php autoload

我正在开发一个应用程序,其中一个" meta" namespace有几个子命名空间,放在不同的目录中。以下面的例子为例:

$loader = require(__DIR__ . '/vendor/autoload.php');
$loader->set('Foo\Bar', realpath(__DIR__ . "/src/123/Foo/Bar"));
$loader->set('Foo\Baz', realpath(__DIR__ . "/src/abc/Foo/Baz"));

" meta"命名空间当然是Foo,子命名空间是BarBaz

composer似乎并不高兴。第二个命名空间被忽略。请注意,内容存储在src下面的不同文件夹中;分别为123abc

是否无法使用composer

以这种方式分配子命名空间

我发现很难找到有关此案例的信息。

1 个答案:

答案 0 :(得分:1)

可以 - 使用PSR-4自动加载器(http://www.php-fig.org/psr/psr-4/What is the difference between PSR-0 and PSR-4?):

$loader = require 'vendor/autoload.php';
$loader->setPsr4('Foo\\Bar\\', realpath(__DIR__ . '/src/123/Foo/Bar'));
$loader->setPsr4('Foo\\Baz\\', realpath(__DIR__ . '/src/abc/Foo/Baz'));

$bar = new Foo\Bar\BarTest();
$baz = new Foo\Baz\BazTest();