在新的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\NonWorking
and调用它use App\Classes\NonWorking\NonWorking
,但出现错误Class 'App\Classes\NonWorking' not found
或错误Class 'App\Classes\NonWorking\NonWorking' not found
。
通过将NonWorking类移至Working类所在的文件夹并将命名空间设置为namespace App\Classes
,我已经能够使其正常运行,但是NonWorking类来自另一个存储库,应该位于其自己的文件夹中,因为它将不会另一个回购中的唯一一个。
那么,如何让Laravel了解此类的位置?
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
重新自动加载类。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句