Reputation:
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
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
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