【发布时间】:2016-04-13 18:53:56
【问题描述】:
不久前,我创建了一个树枝扩展。最近我添加了一个命名空间,以便我可以更轻松地与 composer 一起使用它。我已经这样做了几次,它适用于其他文件/类。
问题在于,如果我在 composer 中更新或转储自动加载时使用 -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
有人知道这是什么原因吗?我似乎无法弄清楚是什么原因造成的。我猜这与作曲家在使用优化时创建类图有关。
【问题讨论】:
-
您的设置对我来说效果很好。检查几件事。确保您需要来自
index.php的vendor/autoload.php。还要检查每个命令后的vendor/composer/autoload_classmap.php和vendor/composer/autoload_psr4.php,看看是否能给你任何见解。 -
@JustinHoward 该类在 psr4.php 文件中可见,但我使用
get_declared_classes()签入了我的 index.php 文件,但未在其中列出。我现在真的很无知。我什至尝试添加/删除额外的命名空间和更改文件夹 -
我也有同样的问题.. 仍然不知道为什么或如何解决它
标签: php composer-php psr-4