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.

Metadata

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";
        }
    }
}
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis

PREVIEWING: may/unit-testing