[英]How to use a custom class in Laravel when it is in a sub-folder?
在我的新 laravel 应用程序中,我添加了两个自定义类。 当我在 controller 中使用它时,一个加载正常,但另一个文件夹中的另一个不起作用。
工作的 class(我将其称为Working
)位于app\Classes
中,它具有命名namespace App\Classes
,在 controller 中,我用use App\Classes\Working
调用它。
非工作 class,我称之为NonWorking
位于app\Classes\NonWorking
中。 我试过给它命名空间命名namespace App\Classes
和namespace App\Classes\NonWorking
。 From the controller I've tried calling it with use App\Classes\NonWorking
and use App\Classes\NonWorking\NonWorking
, but I get the error Class 'App\Classes\NonWorking' not found
or Class 'App\Classes\NonWorking\NonWorking' not found
。
我已经能够通过将 NonWorking class 移动到与 Working class 相同的文件夹中并将命名空间设置为命名namespace App\Classes
来使其正常运行,但是 NonWorking ZA2F2ED4F8EBC2CBB4C21A29DC40AB 应该位于另一个自己的文件夹中它不会是另一个回购的唯一一个。
那么,如何让 Laravel 了解这个 class 在哪里?
Laravel 使用PSR-4 自动加载。 这意味着基本上你的 class 应该遵循文件夹结构。
因此,如果您在app/Classes
中有类,它们应该具有命名空间App\Classes
。
因此文件app/Classes/Working.php
将在其顶部namespace App\Classes;
并将其导入另一个文件,您在另一个文件中use App\Classes\Working;
如果你在app/Classes/SubFolder
中有一个 class ,它应该有命名namespace App\Classes\SubFolder;
所以这里是app/Classes/SubFolder/AmazingClass.php
文件中的 class AmazingClass
:
// app/Classes/SubFolder/AmazingClass.php
namespace App\Classes\SubFolder;
class AmazingClass
{
//
}
让我们在另一个 class 中使用AmazingClass
。
// Some file in another namespace
namespace App\My\Random;
use App\Classes\SubFolder\AmazingClass;
// Rest of the file
另外:每当您添加一个新的 class 并且您无法使用它时,它很可能没有自动加载。 运行命令
composer dump-autoload
重新自动加载类。
要解决您的问题,只需在 App 文件夹中创建您的文件夹和类并运行命令:
composer dump-autoload
他们加载您创建的所有类
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.