我只需要自动加载一些类,我不喜欢psr-0命名空间疯狂(没有冒犯)。
这曾经在我的项目中运作得很好:
"psr-0": {
"": [
"app/controller/",
"app/model/"
]
}
由于某些原因它不再起作用,即使我使用相同的Composer版本。我需要它用于同时使用Silex的新项目。这可能与Silex发生冲突吗?
我知道“classmap”选项,但它有点无用,因为它要求我每次添加新类时都运行“composer install”。
有什么想法吗?
答案 0 :(得分:10)
尝试使用“原始”JSON属性;不是数组(如在您的示例中)。
这对psr-4
就像你说的那样适用于"": "app/"
:
{
"autoload": {
"psr-4": {
"Robbie\\": "core/",
"": "app/"
}
},
"require": {
"monolog/monolog": "1.2.*"
}
}
这为我提供了目录Robbie
下的core
命名空间,作为不受composer控制的源的示例,第三方(供应商)Monolog命名空间以及下面源的默认或非命名空间app
目录。
在composer update
之后,当包含生成的autoload.php时,所有这些都可用:
<?php
require_once 'vendor/autoload.php';
// ...
?>
答案 1 :(得分:3)
使用classmap
代替psr-4
:
"autoload": {
"classmap": ["models/"]
}
答案 2 :(得分:2)
如果您只想重新生成自动加载文件,请使用composer dump-autoload
。