在 PHP 特征 Laravel 5.5 中使用从 Parent Class 导入的 Classes

Use Imported Classes From Parent Class In a PHP Trait Laravel 5.5

我目前正在开发一个 PHP 特性,这将帮助我在我使用 Laravel 框架的一些 class 控制器中重用代码。

我想尽可能使特征方法动态化,但是当尝试访问我的 parent class 导入的 class 时,我得到 Class not found exception.

我的class控制器如下:

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
   }
}

所以我的疑问是,我是否必须再次包含我想在我的 Trait 中使用的模型 classes 还是我做错了什么?

如果将 new 与变量 class 名称一起使用,则必须使用完全限定的 class 名称。我猜 new $class_name 是这里问题的根本原因,因为 $class_name 必须是这样的: 'App\Models\ImagenDiapositiva' 或任何完整的命名空间。只需更改调用 $request->class_name = 'ImagenDiapositiva'; 即可反映 class.

的全名