为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕尼黑的夜晚无繁华 2023-10-15 17:03:39
在我的新 Laravel 应用程序中,我添加了两个自定义类。当我在控制器中使用它时,一个加载正常,但另一个位于另一个文件夹中,无法工作。我将调用的工作类Working位于 中app\Classes,它具有命名空间namespace App\Classes,并且在控制器中我用 来调用它use App\Classes\Working。我将其称为非工人阶级,NonWorking位于app\Classes\NonWorking。我尝试给它命名空间namespace App\Classes和namespace 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 了解这个类在哪里呢?
查看完整描述

2 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

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.php


namespace App\Classes\SubFolder;


class AmazingClass

{

    //

}

让我们AmazingClass在另一个类中使用。


// Some file in another namespace


namespace App\My\Random;


use App\Classes\SubFolder\AmazingClass;


// Rest of the file

另外:每当您添加一个新类并且无法使用它时,它很可能没有自动加载。运行命令


composer dump-autoload

重新自动加载类。


查看完整回答
反对 回复 2023-10-15
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

要解决您的问题,只需在 App 文件夹中创建文件夹和类并运行命令:

composer dump-autoload

他们加载您创建的所有类


查看完整回答
反对 回复 2023-10-15
  • 2 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信