Nicht statische Methode ….. sollte nicht statisch aufgerufen werden
Lesezeit: 2 Minuten
Anfänger-Hobby-PHP-Junge
Ich habe kürzlich ein Update auf 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.
Willkommen beim Stapelüberlauf. Sie sollten einen Benutzernamen auswählen. Ich schlage vor Novice Hobby PHP Boy.
– Webbiedave
30. Oktober 13 um 21:29 Uhr
Danke und das ist ein guter Name für mich, Sergiu 😉
– Anfänger-Hobby-PHP-Junge
30. Oktober 13 um 21:47 Uhr
mamdouh alramadan
Das heißt, es sollte wie folgt heißen:
$timer = (new VTimer)->get($options['magic']);
Der Unterschied zwischen static und non-static ist, dass die erste keine Initialisierung benötigt, damit Sie die aufrufen können classname dann anhängen :: dazu und rufen Sie die Methode sofort auf. So:
ClassName::method();
und wenn die Methode nicht statisch ist, müssen Sie sie wie folgt initialisieren:
$var = new ClassName();
$var->method();
In PHP 5.4 können Sie jedoch stattdessen diese Syntax als Abkürzung verwenden:
(new ClassName)->method();
Oder vielleicht sollte er die Methode so ändern, dass sie statisch ist (da dies eine vorhandene Codebasis ist, die jetzt in einer aktualisierten PHP-Umgebung ausgeführt wird).
– Webbiedave
30. Oktober 13 um 21:30 Uhr
@mamdouh Du bist toll, der Fehler ist weg. Danke für Ihre Hilfe. Ich wünsche Ihnen einen angenehmen Abend. Mit freundlichen Grüßen Jaco
– Anfänger-Hobby-PHP-Junge
30. Oktober 13 um 21:34 Uhr
@ user2938848 – gerne geschehen. Ich hoffe, Sie markieren die Antwort als akzeptiert, da es bei Ihnen funktioniert 🙂
– mamdouh alramadan
30. Oktober 13 um 21:48 Uhr
Durch schnelleren Aufruf: (new ClassName)->method(); Du meinst Kurzschrift. Richtig?
– Piyush Balapure
17. April 15 um 4:28 Uhr
Ich bin mir sicher, dass die Syntax beabsichtigt ist.
– Blackmambo
23. Oktober 15 um 16:51 Uhr
Sie können die Methode auch so ändern, dass sie statisch ist:
class Handler {
public static function helloWorld() {
echo "Hello world!";
}
}
Der eleganteste Weg wäre:
(new ClassName)->method();
Sie können Ihre Funktion auch in umwandeln static function call() {}, aber das hängt von Ihrer Funktion ab und was Sie damit machen.
Wenn Sie eine Klasse instanziieren müssen, vermeiden Sie dies, behandeln Sie statische Funktionen wie Konstanten, sie können keine Objekte haben und erfordern vordefinierte Variablen.
Ich habe dieses Problem auf diese Weise gelöst.
error_reporting('E_NONE');// add this in the pdf dwonload function
$this->load->library('mpdf/mpdf');
Dies sollte helfen.
.
6206500cookie-checkNicht statische Methode ….. sollte nicht statisch aufgerufen werdenyes
Willkommen beim Stapelüberlauf. Sie sollten einen Benutzernamen auswählen. Ich schlage vor
Novice Hobby PHP Boy
.– Webbiedave
30. Oktober 13 um 21:29 Uhr
Danke und das ist ein guter Name für mich, Sergiu 😉
– Anfänger-Hobby-PHP-Junge
30. Oktober 13 um 21:47 Uhr