如何在不重新安装的情况下使用Composer自动加载没有命名空间的类


How to autoload classes without namespaces with Composer without reinstalling?

我只需要自动加载一些类,我不喜欢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