【发布时间】:2016-09-27 11:17:42
【问题描述】:
我对特质不熟悉,但我想尝试一下。但是,它似乎没有加载。
我在 Laravel 应用程序目录下的文件夹中创建了一个 trait:app\Helpers 名为 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;
}
该目录中的类可以正常加载。 PHPStorm 认为这个特征很好。我已经清除了编译的 aritsan 并转储了自动加载。我猜 Laravel 不喜欢命名空间?我希望我不需要在作曲家中进行任何手动加载——但我无法找到任何文档来提示我正在搞砸什么。
错误:
FatalErrorException in PolicyController.php line 15:
Trait 'App\Helpers\CheckPermsAgainstObjectTrait' not found
有什么想法吗?
【问题讨论】:
-
composer.json 显示的 PSR-4 部分是什么?
-
@Devon PSR-4 只是标准的 Laravel: "App\\": "app/" 我找不到需要以不同于类的方式加载特征 - 是案例?
-
不,应该没问题。特征、类、接口都应该与 composer 一样工作。我假设某处有错字,可能在文件名中。只需确保 app/Helpers/CheckPermsAgainstObjectTrait.php 确实存在。
-
呸!!就是这样!哇,我不得不去 SO 寻求帮助以找出一个错字。该类被命名为 Ojbect。 @Devon,谢谢。
标签: php laravel namespaces traits