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.
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();
Vous pouvez également changer la méthode pour qu'elle soit statique comme ceci:
class Handler {
public static function helloWorld() {
echo "Hello world!";
}
}