Laravel 5.5找不到具有正确命名空间的类

时间:2017-11-28 12:00:31

标签: laravel laravel-5 namespaces composer-php autoload

我的./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

我可以做些什么来调查这个问题?

2 个答案:

答案 0 :(得分:1)

我认为问题出在php标签&lt;?

<?php

namespace App\Classes\Events;

class EventX {
  // ...
}
  

PHP还允许短开标记&lt;? (不建议这样做,因为它只有在使用short_open_tag php.ini配置文件指令启用时才可用,或者如果PHP配置了--enable-short-tags选项)。

Link

答案 1 :(得分:0)

您需要将新的命名空间添加到您的composer.json中,并添加到键#34; psr-4&#34;

    "psr-4": {
        "App\\": "app/",
        "Classes\\": "app/classes/"

否则作曲家无法检测到你的新名称空间

另一种方法可以在这里找到: https://stackoverflow.com/a/28360186/6111545