webentwicklung-frage-antwort-db.com.de

Nicht statische Methode ..... sollte nicht statisch aufgerufen werden

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.

28

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();
56

Sie können die Methode auch so ändern, dass sie statisch ist:

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