这是一个更化妆的问题…
我正在使用现有项目中的composer.phar自动加载我的类。
这是名为acme的项目的composer.json
示例片段:
{
"autoload": {
"psr-0": {
"Acme\\Mail": "modules/mail/src/",
}
}
}
和我的文件结构的PAR相似:
app.php
composer.phar
vendor/
modules/
mail/
src/
Acme/
Mail.php (contains Acme\Mail\Mail.php)
在我的案例中,我必须坚持使用“modules/mail”文件夹,并且不能重命名它们。
基本上这是可行的,但是我必须在
Acme
下面创建一个额外的文件夹src
,这有点难看。如果我想在邮件文件夹中去掉最高名称空间部分
Acme
,那么必须如何定义自动加载,如下所示:app.php
composer.phar
vendor/
modules/
mail/
src/
Mail.php (contains Acme\Mail\Mail.php)
我仍然可以像在php文件中那样使用它:
use Acme\Mail;
$mail = new Mail();
还是不可能?
最佳答案
PSR4将使这成为可能。见:https://github.com/php-fig/fig-standards/blob/master/proposed/psr-4-autoloader/psr-4-autoloader.md和http://www.sitepoint.com/battle-autoloaders-psr-0-vs-psr-4/