当 Laravel 中的自定义类位于子文件夹中时,如何使用它?

在我的新 Laravel 应用程序中,我添加了两个自定义类。当我在控制器中使用它时,一个加载正常,但另一个位于另一个文件夹中,无法工作。

我将调用的工作类Working位于 中app\Classes,它具有命名空间namespace App\Classes,并且在控制器中我用 来调用它use App\Classes\Working

我将其称为非工人阶级,NonWorking位于app\Classes\NonWorking。我尝试给它命名空间namespace App\Classesnamespace App\Classes\NonWorking. 从控制器中,我尝试使用use App\Classes\NonWorkingand调用它use App\Classes\NonWorking\NonWorking,但收到错误Class 'App\Classes\NonWorking' not foundor Class 'App\Classes\NonWorking\NonWorking' not found

我已经能够通过将 NonWorking 类移至与工作类相同的文件夹并将命名空间设置为 来使其正确运行namespace App\Classes,但 NonWorking 类来自另一个存储库,应该位于其自己的文件夹中,因为它不会来自另一个仓库的唯一一个。

那么,我如何让 Laravel 了解这个类在哪里呢?


慕尼黑的夜晚无繁华
浏览 96回答 2
2回答

GCT1015

Laravel 使用PSR-4 自动加载。这基本上意味着您的类应该遵循文件夹结构。所以如果你有类app/Classes,它们应该有命名空间App\Classes。因此,该文件app/Classes/Working.php将在其顶部namespace App\Classes;并将其导入到另一个文件中,您可以在另一个文件中写入use App\Classes\Working;如果你里面有一个类app/Classes/SubFolder,它应该有命名空间所以这里是文件中的namespace App\Classes\SubFolder; 一个类:AmazingClassapp/Classes/SubFolder/AmazingClass.php// app/Classes/SubFolder/AmazingClass.phpnamespace App\Classes\SubFolder;class AmazingClass{    //}让我们AmazingClass在另一个类中使用。// Some file in another namespacenamespace App\My\Random;use App\Classes\SubFolder\AmazingClass;// Rest of the file另外:每当您添加一个新类并且无法使用它时,它很可能没有自动加载。运行命令composer dump-autoload重新自动加载类。

慕雪6442864

要解决您的问题,只需在 App 文件夹中创建文件夹和类并运行命令:composer dump-autoload他们加载您创建的所有类
打开App,查看更多内容
随时随地看视频慕课网APP