0

我似乎找不到这个问题的答案,尽管我可能不是在寻找对类和 oop 新的正确事物。我想知道在调用类方法时是否可以使用变量。

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

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

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

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

在页面上我可以回声说

$user->userRole;

这将返回访客或用户。

因此,一旦我确定了角色并将其放入变量中,即

$role

有没有办法我可以做到以下几点?

Dashboard::get_$role_graph1();
4

2 回答 2

1

虽然这个问题已经得到解答,但如果可读性存在问题,我认为有更好的方法来处理这个问题。

对于初学者,请在函数上使用驼峰式大小写而不是 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();

像冠军一样工作,看起来好多了。希望有帮助!

于 2013-09-06T16:37:41.383 回答
0

是的,您可以,但请谨慎使用:

call_user_func(array("Dashboard", "get_" . $role . "_graph1"), $args);
于 2013-09-06T15:42:20.717 回答