Search code examples
phpobjectthisfatal-error

Fatal error: Using $this when not in object context but everything looks fine


I had this class:

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

And I got this error:

Fatal error: Using $this when not in object context

But in this case, $this is used within the class and I can't understand where the problem is. In other files, I get the information with acController::isAuthorized();


Solution

  • In a static function, you cannot $this.

    $this implies existence of an object(instance of a class). While static implies a call to a class.

    From the PHP documentation :

    Because static methods are callable without an instance of the object created, the pseudo-variable $this is not available inside the method declared as static.