在我的新 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;
一个类:AmazingClass
app/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
重新自动加载类。
- 2 回答
- 0 关注
- 117 浏览
添加回答
举报
0/150
提交
取消