致命错误:在不在对象上下文中时使用$ this,但一切看起来都很好

时间:2014-05-27 19:47:35

标签: php object this fatal-error

我上过这堂课:

<?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) {}
}

&GT;

我收到了这个错误:

  

致命错误:不在对象上下文中时使用$ this

但是在这种情况下,$ this在课堂上使用,我无法理解问题出在哪里。在其他文件中,我通过acController::isAuthorized();

获取信息

祝你好运, 乔治!

2 个答案:

答案 0 :(得分:1)

在静态功能中,你不能$ this。

$ this 表示存在对象(类的实例)。虽然静态意味着对类的调用。

从PHP文档:

  

因为静态方法可以在没有对象实例的情况下调用   创建时,伪变量$ this在方法中不可用   声明为静态。

答案 1 :(得分:0)

您遇到问题,因为您的方法是静态的。这表示该类的一个实例,但如果您将其用作静态,则可以在没有该类的任何实例的情况下使用这些方法。所以你不能用静力学。