作曲家PSR4奇怪的行为

时间:2016-01-09 00:00:27

标签: php composer-php psr-4

前段时间我创建了一个枝条延伸。最近我添加了一个命名空间,因此我可以更轻松地将它与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

有谁知道造成这种情况的原因是什么?我似乎无法弄清楚造成这种情况的原因。我猜测它与使用优化时创建类图的作曲家有关。

1 个答案:

答案 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时,问题就消失了 - 请仔细检查你是否使用了相同的名字(和案例!)!