Do not use this in a static method
Cette page n'est pas encore disponible en français, sa traduction est en cours.
Si vous avez des questions ou des retours sur notre projet de traduction actuel,
n'hésitez pas à nous contacter.
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";
}
}
}