我是新来的特性,但我想我会给它一个尝试。但是,它似乎没有加载。
我在Laravel应用程序目录下的一个文件夹中创建了一个trait:应用程序\名为CheckPermsAgainstObjectTrait.php的帮助程序
下面是特征代码:
<?php
namespace App\Helpers;
trait CheckPermsAgainstObjectTrait {
function something{}
}
我试着在控制器中使用它,例如:
<?php
namespace App\Http\Controllers;
use this&that;
use App\Helpers\CheckPermsAgainstObjectTrait;
class PolicyController extends Controller{
use CheckPermsAgainstObjectTrait;
}
类在那个目录下加载的很好。PHPSorm看到了这个特点。我已经编译了aritsan并转储了autoload。我猜Laravel不喜欢命名空间的某些地方?我希望我不需要在composer中进行任何手动加载--但是我很难找到任何文档来给我提示我搞砸了什么。
错误:
FatalErrorException in PolicyController.php line 15:
Trait 'App\Helpers\CheckPermsAgainstObjectTrait' not found
有什么想法吗?
6条答案
按热度按时间vsmadaxz1#
是否转储了自动加载文件?
m1m5dgzv2#
我的答案是,我的trait文件顶部的名称空间是错误的,因为我使用了一个Laravel trait作为例子。如果你的trait在
App/Traits/MyTrait.php
中,那么确保你的名称空间是:然后从包含该特征的文件中:
不需要搞砸
config/app.php
、composer.json
或自动加载。j8ag8udp3#
我遇到过一个非常类似的问题,在使用
phpunit
运行测试时得到错误Trait 'Tests\CreatesApplication' not found in '.../my_project/tests/TestCase.php' on line 9
,因为我手动更新了我的Laravel项目,肯定错过了一些更改。这也可能发生在任何在唯一名称空间中创建trait或类的人身上。不管怎样,@德文郡对最初问题的评论给我指出了正确的方向。
我的
composer.json
文件中缺少所需的自动加载器配置,所以我从Laravel github repository检查了我的Laravel版本(本例中为5.4)应该是什么。在本例中,我不是从
App\
中的名称空间调用的(该名称空间已经在composer.json
中了)。以下是我在
composer.json
中遗漏的内容:感谢Devon!希望这能让别人不把头发拔出来。
hgb9j2n64#
这对我很有效
mhd8tkvw5#
当你的Trait文件名拼写错误或类名不正确时,这种情况可能会发生。请检查你的文件名是否与类名相同
pbpqsu0x6#
当你的Trait文件名拼写错误或类名不正确时,这种情况可能会发生。请检查你的文件名是否与类名相同