php - 通过变量访问类静态函数

标签 php oop

所以我有一个名为 router 的 PHP 类,它获取 URL 并将其分解以查找请求的组件、操作和任何给定值。然后它加载负责的类,运行操作等。我现在通过用户类将用户访问集成到类中。

对于每个组件(它是一个类),我有一个名为“perms”的静态类数组变量,它将每个操作保存为一个索引,并将一个数字保存为运行该操作所需的最小权限。每个组件还有一个静态函数来获取传递的操作名称的权限值。

我遇到的问题是让静态函数与存储在变量中的类名一起正常工作。在路由器中,我使用一个变量来保存组件的名称。

$this->controller // cms, calendar ,etc

然后我向其中添加“Controller”以获取类的名称

$class = $this->controller.'Controller'; // cmsController, calendarController, etc

但是,当我尝试使用它访问静态函数时出现错误

$minActionPerm = $class::getPerms( $this->action ); // No go, parse error

当我按字面意思输入类名时,我没有收到任何错误,但这不是真正的解决方案。

$minActionPerm = cmsController::getPerms( $this->action ); // Good, but literal

当我创建类的对象以运行操作时,该变量也有效。

$object = new $class();

我确定这可能只是一个简单的答案 - 例如变量使用,但我现在还不知道。

最佳答案

您需要使用 call_user_func功能。

例子:

call_user_func(array($class, 'getPerms'), $this->action);

如果您使用的是 PHP 5.2.3+,您也可以这样做:

call_user_func($class . '::getPerms', $this->action);

关于php - 通过变量访问类静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1370644/

相关文章:

javascript - jScroll.js 与 Laravel 5 : nextSelector not found - destroying

php - 当用户在我的网站上执行多步操作时,我该如何标记他们的进度?

php - 将 mysqli 与 oop php 一起使用

java - Java 中的抽象?

Javascript有效的代码结构

oop - 返回类型的具体类型或接口(interface)?

php - 在 php 中从 mysql 选择一个文本字段

php - 到底什么时候进行 PHP-MySQL 变量赋值?

php - 在动态更新的页面上包含 HTML 的更好方法 : php include() or MySQL Database?

javascript - 在匿名 JavaScript 函数中隐藏变量,但使用 `this` 访问它们