所以我有一个名为 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/