【发布时间】:2016-01-10 21:29:48
【问题描述】:
我有一个包含多个子文件夹的项目。在其中一个文件夹中,它们是一些“插件”。所有这些插件都有一个 composer.json 和一个供应商文件夹。我现在想构建自己的插件并创建一个新文件夹并将composer.json 放入该目录。 composer install 工作没有任何问题,但是当我以某种方式安装我的插件时,我得到了错误
FastCGI: server "/fcgi-bin-php5-fpm-ezi" stderr: PHP message: PHP Fatal error: Call to undefined method Composer\\Autoload\\ClassLoader::setPsr4()
什么可能导致这个问题?我已经做过composer dump-autoload 和composer global update,因为我在互联网上找到了这些解决方案,但它仍然不起作用。我必须做一些特别的事情才能让它在子文件夹中工作吗?
目前这是我的 composer.json
{
"name": "namespace/projectname-addonname",
"autoload": {
"psr-4": {
"namespace1\\namespace2\\namespace3\\" : "src"
}
}
}
我不知道这是否有帮助,但是当我 var_dump 加载程序时,这就是结果
object(Composer\Autoload\ClassLoader)#138 (4) {
["prefixes":"Composer\Autoload\ClassLoader":private]=>
array(0) {
}
["fallbackDirs":"Composer\Autoload\ClassLoader":private]=>
array(0) {
}
["useIncludePath":"Composer\Autoload\ClassLoader":private]=>
bool(false)
["classMap":"Composer\Autoload\ClassLoader":private]=>
array(0) {
}
}
之后,$loader->setPsr4 方法被调用,我得到了致命错误。
奇怪的是,当使用classmap 而不是psr-4 进行自动加载时,它可以正常工作。
【问题讨论】:
-
你的作曲家版本是多少?
composer --version的结果是什么? -
我有
Composer version 1.0-dev (6eb50623e6e00bac4ed893802836e50b62c83434) 2016-02-08 19:03:10和同样的问题
标签: php composer-php autoload psr-4