0

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

1
  • 1
    The magic keyword to your problem is static: Are you instantiating an acController instance? Commented May 27, 2014 at 19:48

2 Answers 2

1

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.

Sign up to request clarification or add additional context in comments.

Comments

0

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.

Comments