Do not use this in a static method
ID: php-code-style/no-this-static
Language: PHP
Severity: Error
Category: Error Prone
Description
In PHP, $this
is a special variable that is used to reference the current object. However, static methods are not associated with an object, but with a class. Therefore, $this
is not available within a static method.
Ignoring this rule and attempting to use $this
in a static method results in a fatal error because PHP cannot resolve $this
without an instance of the class. It is critical to ensure that $this
is not used in a static context to prevent such fatal errors.
To follow this rule, you should only use $this
in non-static methods where it will refer to the current object instance. If you need to use a method or property in a static method, consider making that method or property static as well. For example, if you have a property that you need to access in a static method, you can declare it as public static $property
, and then access it in the static method using self::$property
instead of $this->property
.
Non-Compliant Code Examples
<?php
class Foo {
public $debug;
static function print() {
if ($this->debug) {
echo "Testing";
}
}
}
Compliant Code Examples
<?php
class Foo {
public $debug;
public function print() {
if ($this->debug) {
echo "Testing";
}
}
}