在PHP中跨变量调用静态方法

时间:2019-01-29 14:58:33

标签: php laravel static-methods

我在Laravel项目中工作,无法跨变量调用静态方法 例如:

$objName = 'User';
$objName::get();

这样我会出错。

3 个答案:

答案 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*/