我的./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
我可以做些什么来调查这个问题?
答案 0 :(得分:1)
我认为问题出在php标签&lt;?
上<?php
namespace App\Classes\Events;
class EventX {
// ...
}
PHP还允许短开标记&lt;? (不建议这样做,因为它只有在使用short_open_tag php.ini配置文件指令启用时才可用,或者如果PHP配置了--enable-short-tags选项)。
答案 1 :(得分:0)
您需要将新的命名空间添加到您的composer.json中,并添加到键#34; psr-4&#34;
"psr-4": {
"App\\": "app/",
"Classes\\": "app/classes/"
否则作曲家无法检测到你的新名称空间
另一种方法可以在这里找到: https://stackoverflow.com/a/28360186/6111545