我在Laravel项目中工作,无法跨变量调用静态方法 例如:
$objName = 'User';
$objName::get();
这样我会出错。
答案 0 :(得分:1)
$objName = 'User';
是一个字符串,用于使用get()
方法,$ objName应该是一个对象,例如:
$objName = User::all()->first(); // this will return an object
答案 1 :(得分:1)
好,我用
User::all();
但是我想从URL中获取参数,例如www.example.com/User、www.example.com/Articles-> User和Article是URL中的参数(这是Laravel Web路由),并调用静态方法。如果我写的不是调用Article对象的第一个URL,而是写了第一个URL而不是调用User对象。
www.example.com/User
$param= 'User';
$param::all();
www.example.com/Article
$param= 'Article';
$param::all()
答案 2 :(得分:0)
我找到解决办法! Laravel中的解决方案:
$data = call_user_func( array('\App\\'.$param , 'all'));
但是如果要在纯PHP中使用,则为:
$data = call_user_func( array($param , 'all'));
这将调用对象和方法。
如果您要在methond中发送arg,则是:
$data = call_user_func( array('\App\\'.$param , 'all'), $arg); /*For Laravel*/
$data = call_user_func( array($param , 'all'), $arg); /*For plain PHP*/