2012-09-14 170 views
4

这是一个更具有美学价值的问题...作曲家的命名空间自动加载问题

我在现有项目中使用了composer.phar来自动加载我的类。

这是composer.json为我的项目命名为阿克米一个例子片段:

{ 
    "autoload": { 
     "psr-0": { 
      "Acme\\Mail": "modules/mail/src/", 
     } 
    } 
} 

和我的文件结构的标准杆是这样的:

app.php 
composer.phar 
vendor/ 
modules/ 
    mail/ 
     src/ 
      Acme/ 
       Mail.php (contains Acme\Mail\Mail.php) 

我要坚持到文件夹“模块/邮件”在我的情况下,不能重命名。

基本上这个工作,但我必须创建一个额外的文件夹下面Acmesrc是有点难看。

必须怎样自动加载定义,如果我要离开了最高的命名空间部分Acme在我的邮件文件夹,所以它看起来是这样的:

app.php 
composer.phar 
vendor/ 
modules/ 
    mail/ 
     src/ 
      Mail.php (contains Acme\Mail\Mail.php) 

,我仍然能在PHP中使用它像文件:

use Acme\Mail; 
$mail = new Mail(); 

或者这不可能?

+0

您应该阅读PSR-0标准文档https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md – AdrienBrault

回答