这是一个更具化妆性的问题......
我在现有项目中使用composer.phar来自动加载我的课程。
这是名为 Acme 的项目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)
我必须坚持文件夹" 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();
或者不可能?
答案 0 :(得分:5)
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/
答案 1 :(得分:1)
如果您不想遵循PSR-0标准(您真的应该重新考虑这样做),您可以使用类映射生成。请参阅http://getcomposer.org/doc/04-schema.md#autoload
上的参考资料