Ich habe kürzlich ein Update für PHP 5.4 durchgeführt und erhalte eine Fehlermeldung zu statischem und nicht statischem Code.
Das ist der Fehler:
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
Dies ist die Zeile 371:
$timer = VTimer::get($options['magic']);
Ich hoffe, jemand kann helfen.
Das heißt, es sollte heißen wie:
$timer = (new VTimer)->get($options['magic']);
Der Unterschied zwischen static
und non-static
Besteht darin, dass die erste Initialisierung nicht erforderlich ist, sodass Sie classname
aufrufen und dann ::
Anhängen und die aufrufen können Methode sofort. Wie so:
ClassName::method();
und wenn die Methode nicht statisch ist, müssen Sie sie folgendermaßen initialisieren:
$var = new ClassName();
$var->method();
In PHP 5.4 können Sie diese Syntax jedoch stattdessen als Kurzform verwenden:
(new ClassName)->method();
Sie können die Methode auch so ändern, dass sie statisch ist:
class Handler {
public static function helloWorld() {
echo "Hello world!";
}
}