前段时间我创建了一个枝条延伸。最近我添加了一个命名空间,因此我可以更轻松地将它与composer一起使用。我已经完成了几次,它可以与其他文件/类一起使用。
问题是,如果我在编辑器中更新或dumpautoload时使用-o选项(优化),它只能正确自动加载。
因此,例如,如果我运行composer dumpautoload -o
我的课程没有问题。如果我运行composer dumpautoload
它将无效并给我以下错误:
Fatal error: Class 'Crecket\custom_twig_extension' not found in C:\Dropbox\Ampps\www\crecket.dev\index.php on line 24
我的扩展课程:
namespace Crecket;
class custom_twig_extension extends \Twig_Extension{
// The code
}
我的作曲家档案
"autoload": {
"psr-4": {
"Crecket\\": "src/"
}
}
文件夹结构
src/custom_twig_extension.php
有谁知道造成这种情况的原因是什么?我似乎无法弄清楚造成这种情况的原因。我猜测它与使用优化时创建类图的作曲家有关。
答案 0 :(得分:0)
我遇到了类似的问题,原因是我的文件中的类名与提供它的文件名不同。我有myclass.php和类MyClass {}
根据有关遇到类似问题的人的reddit讨论(https://www.reddit.com/r/laravel/comments/2zx3in/l5_composer_dumpautoload_gives_class_not_found/):
在PSR-4中,您必须将文件命名为该类的名称。
当我将myclass.php重命名为MyClass.php时,问题就消失了 - 请仔细检查你是否使用了相同的名字(和案例!)!