2016-07-26 11 views
2

"メタ"名前空間にいくつかのサブネームスペースがあり、別のディレクトリに配置されているアプリケーションに取り組んでいます。以下の例を見てみましょう:作者が異なるディレクトリからサブネームスペースをオートロードする

$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")); 

「メタ」名前空間はもちろんFooのものであり、サブ名前空間がBarBazです。

composerこれは嬉しいようです。 2番目の名前空間は無視されます。内容はsrc以下の異なるフォルダに格納されています。 123およびabcである。

composerを使用してこのようにサブネームスペースを割り当てることはできませんか?

このコーナーケースについての情報を見つけることはかなり困難です。

答えて

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(); 
+0

ありがとうございました!私は答えがps4と思われた。 :) – Kafoso

関連する問題