我正在开发一个应用程序,其中一个" 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
,子命名空间是Bar
和Baz
。
composer
似乎并不高兴。第二个命名空间被忽略。请注意,内容存储在src
下面的不同文件夹中;分别为123
和abc
。
是否无法使用composer
?
我发现很难找到有关此案例的信息。
答案 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();