user546774
user546774

Reputation:

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

Upvotes: 0

Views: 57

Answers (2)

Aris
Aris

Reputation: 5057

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.

Upvotes: 1

Akimoto
Akimoto

Reputation: 368

You have a problem because your methods are statics. this represents an instance of the class but if you use it as static, the methods could be used without any instance of the class. So you can't this with statics.

Upvotes: 0

Related Questions