2013-10-30 12 views
19

Ich habe vor kurzem ein Update auf PHP 5.4, und ich bekomme einen Fehler über statischen und nicht-statischen Code.Nicht-statische Methode ..... sollte nicht statisch

Dies 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 

Das ist die Linie 371:

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

ich jemand helfen kann hoffen.

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

der Unterschied zwischen static und non-static ist, dass das erste man braucht nicht Initialisierung, damit Sie die classname dann :: anhängen anrufen und Gespräch:

+3

Willkommen beim Stapelüberlauf. Sie sollten einen Benutzernamen auswählen. Ich empfehle 'Novice Hobby PHP Boy'. – webbiedave

+3

Danke und das ist ein guter Name für mich, Sergiu;) –

Antwort

41

dass es Mittel sollte wie genannt werden die Methode sofort. wie so:

ClassName::method(); 

und wenn die Methode nicht statisch ist, müssen Sie es wie so initialisieren:

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

jedoch in PHP 5.4 Sie diese Syntax stattdessen für eine schnellere calling verwenden können:

(new ClassName)->method(); 
+2

Oder vielleicht sollte er die Methode ändern, um statisch zu sein (da dies eine vorhandene Codebasis ist, die jetzt in einer aktualisierten PHP-Umgebung ausgeführt wird). – webbiedave

+1

@webbiedave - ja das würde auch funktionieren: P –

+0

@mamdouh Sie sind toll, der Fehler ist weg. Vielen Dank für Ihre Hilfe. Schönen Abend noch. mit freundlichen Grüßen, Jaco –

2

Sie können auch die Methode ändern, wie so statisch zu sein:

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