Использование импортированных классов из родительского класса в PHP Trait Laravel 5.5 - PullRequest
0 голосов
/ 08 февраля 2019

В настоящее время я работаю над особенностью PHP, которая поможет мне повторно использовать код в некоторых контроллерах классов, которые я использую в фреймворке Laravel.

Я хотел сделать методы признаков настолько динамичными, насколько мог, но когдапытаясь получить доступ к классу, который импортировал мой родительский класс, я получаю Class not found exception.

Мой контроллер класса выглядит следующим образом:

namespace App\Http\Controllers\Admin;

use App\Models\ {
    Curso,
    Leccion,
    Diapositiva,
    ImagenDiapositiva
};

use App\Traits\TestTrait;

class DiapositivasController extends Controller{
   use TestTrait;

   public function addRecord(Request $request){
      $request->class_name = 'ImagenDiapositiva';
      $this->addImage($request);
   }
}

Моя черта:

namespace App\Traits;

trait TestTrait{
   public function addImage($request){
      $class_name = $request->class_name;
      $diapositiva = new $class_name;

     //extra code
   }
}

Так что я сомневаюсь, нужно ли мне снова включать классовые модели, которые я хочу использовать, в свою черту или я делаю что-то еще неправильно?

1 Ответ

0 голосов
/ 08 февраля 2019

если вы используете new с именем класса переменной, вы должны использовать полное имя класса.Я предполагаю, что new $class_name является основной причиной проблемы здесь, так как $class_name должно быть что-то вроде: 'App \ Models \ ImagenDiapositiva' или каким-либо другим пространством имен.Просто нужно изменить вызов $request->class_name = 'ImagenDiapositiva';, чтобы отразить полное название класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...