在 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.
的全名
我目前正在开发一个 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.