我似乎无法找到答案,虽然我可能没有找到正确的新课程和oop。我想知道在调用类方法时是否可以使用变量。
当用户登录我的系统时,我希望根据用户角色在仪表板上显示一些图表。
对于初学者来说,这是我班级的一个例子
class Dashboard
{
function get_guest_graph1()
{
return 'guest graph';
}
function get_user_graph1()
{
return 'user graph';
}
}
在页面上我可以回应说
$user->userRole;
这将返回访客或用户。
所以,一旦我确定了角色并将其置于变量即
$role
我可以采取以下方式吗?
Dashboard::get_$role_graph1();
答案 0 :(得分:1)
虽然这个问题已经得到解答,但如果可读性有问题,我认为有更好的方法可以解决这个问题。
对于初学者来说,在函数上使用camel大小写而不是chaining_characters_for_variable_names。
class Dashboard {
function getFirstUserGraph() {
return 'user graph 1';
}
}
我不鼓励在函数名中使用数字!
其次,要实现调用Dashboard :: getFirstUserGraph()的愿望,只需将其设为静态函数:
public static function getFirstUserGraph() {}
然后您不必实例化该类,而是静态使用它。
最后,通过变量调用类方法相当简单,没有call_user_func()的丑陋。见下文:
$getGraph = "getFirstUserGraph";
Dashboard::$getGraph();
像冠军一样工作,看起来更好。希望有所帮助!
答案 1 :(得分:0)
是的,你可以,但谨慎使用:
call_user_func(array("Dashboard", "get_" . $role . "_graph1"), $args);