web-dev-qa-db-fra.com

La méthode non statique ..... ne doit pas être appelée statiquement

J'ai récemment fait une mise à jour vers PHP 5.4, et je reçois une erreur sur le code statique et non statique.

Voici l'erreur:

PHP Strict Standards:  Non-static method VTimer::get() 
should not be called statically in /home/jaco/public_html/include/function_smarty.php on line 371

Voici la ligne 371:

$timer  = VTimer::get($options['magic']);

J'espère que quelqu'un pourra aider.

28

Cela signifie qu'il devrait être appelé comme:

$timer = (new VTimer)->get($options['magic']);

La différence entre static et non-static est que le premier n'a pas besoin d'initialisation, vous pouvez donc appeler classname puis ajouter :: et appelez immédiatement la méthode. Ainsi:

ClassName::method();

et si la méthode n'est pas statique, vous devez l'initialiser comme ceci:

$var = new ClassName();
$var->method();

Cependant, dans PHP 5.4, vous pouvez utiliser cette syntaxe à la place comme raccourci:

(new ClassName)->method();
56
mamdouh alramadan

Vous pouvez également changer la méthode pour qu'elle soit statique comme ceci:

class Handler {
    public static function helloWorld() {
        echo "Hello world!";
    }
}
7
deadghost