17

我只需要自动加载一些类,我不喜欢 psr-0 命名空间的疯狂(无意冒犯)。

这曾经在我的项目中工作得很好:

"psr-0": {
    "": [
        "app/controller/",
        "app/model/"
    ]
}

由于某种原因,它不再起作用,即使我使用的是相同的 Composer 版本。我需要它用于也使用 Silex 的新项目。这可能与 Silex 有冲突吗?

我知道“classmap”选项,但它有点没用,因为它要求我每次添加新类时都运行“composer install”。

有任何想法吗?

4

3 回答 3

17

尝试使用“原始”JSON 属性;不是数组(如您的示例中)。psr-4就像你说的那样,这对我有用"": "app/"

{
"autoload": {
    "psr-4": {
        "Robbie\\": "core/",
        "": "app/"
    }
},
"require": {
        "monolog/monolog": "1.2.*"
    } 
}

这给了我Robbie目录下的命名空间core,作为不受作曲家控制的源的示例,第 3 方(供应商)Monolog 命名空间以及目录下源的默认或非命名空间app

在 a 之后composer update,当包含生成的 autoload.php 时,它们都可用:

<?php    
require_once 'vendor/autoload.php';
// ...    
?>    
于 2014-01-05T20:37:53.890 回答
11

使用classmapin 代替psr-4

"autoload": {
    "classmap": ["models/"]
}
于 2018-03-26T06:35:17.393 回答
4

如果您只想重新生成自动加载文件,请使用composer dump-autoload.

于 2013-08-02T15:19:43.917 回答