【发布时间】:2018-05-11 21:10:28
【问题描述】:
我的./app 文件夹如下所示:
+-- app
+-- Classes
+-- Events
+-- EventBase.php
+-- EventX.php
EventX 文件没有什么秘密:
<?
namespace App\Classes\Events;
class EventX {
// ...
}
EventBase.php 代表一个 Facade,在它里面我只是尝试实例化一个 EventX:
public function someMethod() {
new \App\Classes\Events\EventX;
// ...
}
在这一行之后,Framework 抛出一个异常,告诉该类未找到:
Symfony\Component\Debug\Exception\FatalThrowableError (E_ERROR)
Class 'App\Classes\Events\EventX' not found
即便如此:
file_exists(__DIR__ . '\EventX.php'); // true
我在尝试创建 Facades 之前已经遇到过这个问题,并通过从当前目录移动类文件并在移回后解决了这个问题(是的,我不知道为什么,但它确实有效)。
有些东西告诉我这是自动加载过程的问题,所以我尝试了这些命令(但仍然无法正常工作):
php artisan cache:clear
php artisan clear-compiled
php artisan config:clear
composer dump-autoload
我可以做些什么来调查问题?
【问题讨论】:
-
我不确定,但可能是一个领先的`\`导致它?但是,仅供参考,您可以直接调用没有其命名空间的类,因为它出现在同一目录中。
-
@Chay22 我知道并尝试过,即使没有复杂的结构,这也不是命名空间问题。好像是自动加载问题
-
嗯,那很难。您是否尝试过删除供应商目录并执行 composer 重新安装?
-
"\" 不会导致它,因为它只是设置类命名空间的绝对方式。
\App\Classes\Events\EventX或EventX在这种情况下具有相同的输出... -
@Chay22 软件包已重新安装,但问题依旧。
标签: laravel laravel-5 namespaces composer-php autoload