大家好我有一个静态函数,这个函数在我的laravel 5应用程序中的几个模型中很常见,我想使用一个路径来调用特定模型中的函数。这是我的方法......
Route::get('/obj/{model}/call', function($model){
$model = ucfirst($model); //make the first letter uppercase
$model::callObjParam(); //evaluate string to model
});
所以字符串解析为this ::
'asset' - 'obj/asset/call' using the 'Asset' model,
'user' - 'obj/user/call' using the 'User' model,
'Role' - 'obj/role/call' using the 'Role' model
但我一直收到错误:
routes.php第122行中的FatalThrowableError Class' Asset'找不到
有没有办法将字符串计算到类?
答案 0 :(得分:2)
这样做是个坏主意,但如果你真的想这样做,请使用类的完整命名空间:
$model = 'App\\' . studly_case($model);
$model::method();
此外,您应验证输入模型名称并使用studly_case()
帮助程序将字符串转换为正确的类名。
答案 1 :(得分:1)
如果您只有3个案例,也可以这样做:
switch($model){
case 'asset' :
Asset::callObj();
break;
case 'user' :
User::calObj() ;
break;
case 'role' :
Role::calObj() ;
break;
case default :
default::callObj()
break;
}