2016-05-29 2 views
2

Я новичок в чертах, но думал, что попробую. Но, похоже, он не загружается.Laravel Custom Trait Not Found

Я создал черту в папку в директории приложения Laravel: приложение \ 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 

Любые мысли?

+0

Что представляет собой раздел PSR-4 в исполнении composer.json? – Devon

+0

@Devon PSR-4 - это просто стандарт Laravel: «App \\»: «app /» Я не могу найти упоминание о необходимости загрузки признака иначе, чем класс, - так ли это? – Watercayman

+3

Нет, все должно быть хорошо. Черты, классы, интерфейсы должны работать одинаково с композитором. Я предполагаю, что где-то есть опечатка, возможно, в имени файла. Просто убедитесь, что приложение/Helpers/CheckPermsAgainstObjectTrait.php действительно существует. – Devon

ответ

2

Вы сбрасывали файлы автозагрузки?

composer dump-autoload 
+0

лучше использовать 'php artisan dump-autoload', если это возможно – dani24

0

Ответ для меня было то, что я имел неправильное пространство имен в верхней части моего файла признака благодаря работе из признака Laravel в качестве примера. Если ваша черта в App/Traits/MyTrait.php то убедитесь, что пространство имен:

namespace App\Traits; 

trait MyTrait 
{ 
    // .. 
} 

Затем из файла, который в том числе черты:

use App\Traits\MyTrait; 

class MyClass 
{ 
    use MyTrait; 

    // .. 
} 

Нет необходимости возиться с config/app.php, composer.json или автозагрузкой.