调用类方法时使用变量

时间:2013-09-06 15:40:23

标签: php oop

我似乎无法找到答案,虽然我可能没有找到正确的新课程和oop。我想知道在调用类方法时是否可以使用变量。

当用户登录我的系统时,我希望根据用户角色在仪表板上显示一些图表。

对于初学者来说,这是我班级的一个例子

class Dashboard
{
  function get_guest_graph1()
  {
    return 'guest graph';
  }

  function get_user_graph1()
  {
    return 'user graph';
  }
}

在页面上我可以回应说

$user->userRole;

这将返回访客或用户。

所以,一旦我确定了角色并将其置于变量即

$role

我可以采取以下方式吗?

Dashboard::get_$role_graph1();

2 个答案:

答案 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);