我上过这门课:
<?php
class acController {
protected $_enabledPages = array(
'front_login.php',
);
protected $_enabledDirectories = array (
'admin'
);
public static function isAuthorized() {
echo '<pre>';
acController::checkResource($_SERVER['SCRIPT_URI'], $this->_enabledDirectories);
acController::checkResource($_SERVER['SCRIPT_URI'], $this->_enabledDirectories);
echo '</pre>';
}
protected static function checkResource($urlAddress, $addressArray) {}
}
?>
我收到了这个错误:
致命错误:不在对象上下文中使用 $this
但是在这种情况下,
$this
在类中使用,我无法理解问题出在哪里。在其他文件中,我通过 acController::isAuthorized();
获取信息
在静态函数中,你不能使用$this。
$this 暗示对象(类的实例)的存在。而 static 意味着调用一个类。
来自 PHP 文档:
因为静态方法无需对象实例即可调用 创建后,伪变量 $this 在方法内不可用 声明为静态。
你有问题,因为你的方法是静态的。这表示类的一个实例,但如果将其用作静态,则可以在没有类的任何实例的情况下使用这些方法。所以你不能用静态来做到这一点。