将字符串类名转换为laravel中的对象

我有这个特性,我想使用依赖注入


<?php

 namespace App\Http\Controllers\Admin;

 trait ControllerTrait{



public function index($this->model $payroll){


    return $this->model->paginate(20);

   } 

}

使用此特征的控制器


namespace App\Http\Controllers\Admin;


use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

use App\Payroll;


class PayrollController extends Controller

{

   use ControllerTrait;


   public $model = "Payroll";



 }

$model 现在是一个字符串,如何在调用特征的索引方法时将其转换为对象


狐的传说
浏览 175回答 3
3回答

萧十郎

我不相信动态类型提示是可能的,在这种情况下也没有必要。我想这就是你要找的。namespace App\Http\Controllers\Admin;trait ControllerTrait{&nbsp; &nbsp; public function index() {&nbsp; &nbsp; &nbsp; &nbsp; return ('\App\\'.$this->model)::paginate(20);&nbsp; &nbsp; }}

海绵宝宝撒

我认为您可以将其用作 php 中的字符串$controllerClassName&nbsp;=&nbsp;'TODOS\CONTROLLERS\\'&nbsp;.&nbsp;ucfirst($this->_controller)&nbsp;.&nbsp;'Controller';这是一个字符串,我用它来创建实例$controller&nbsp;=&nbsp;new&nbsp;$controllerClassName();

慕姐4208626

您可以使用“call_user_func”函数来调用模型中的函数。public&nbsp;$model&nbsp;=&nbsp;"Payroll"; call_user_func($model&nbsp;.&nbsp;"::index");希望这会有所帮助。
打开App,查看更多内容
随时随地看视频慕课网APP