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

问题描述 投票:0回答:2

我上过这门课:

<?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();

获取信息
php object this fatal-error
2个回答
1
投票

在静态函数中,你不能使用$this。

$this 暗示对象(类的实例)的存在。而 static 意味着调用一个类。

来自 PHP 文档:

因为静态方法无需对象实例即可调用 创建后,伪变量 $this 在方法内不可用 声明为静态。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.