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