PHP Rocks
PHProcksAutoloader liefert Parse error - Druckversion

+- PHP Rocks (https://www.php-rocks.de)
+-- Forum: PHP Programmierung (https://www.php-rocks.de/https://www.php-rocks.de/forum/1-php-programmierung.html)
+--- Forum: PHP Basics (https://www.php-rocks.de/https://www.php-rocks.de/forum/2-php-basics.html)
+--- Thema: PHProcksAutoloader liefert Parse error (/https://www.php-rocks.de/thema/322-re-phprocksautoloader-liefert-parse-error.html)



PHProcksAutoloader liefert Parse error - jaderbass - 23.08.2018

Hallo liebes Forum,

ich nutze den PHPMailer in der Version 6 zusammen mit dem von Euch empfohlenen Autoloader in einer WordPress-Umgebung.

Beim Durchsuchen der WordPress debug.logs wird ein Parse error in der Datei mit dem Autoloader angezeigt.

Die komplette Meldung lautet:
Code:
Parse error:  syntax error, unexpected ':', expecting ';' or '{' in /.../PHProcksAutoloader.php on line 16

Es betrifft hier die Zeile mit der Methode Prepare:
PHP-Code:
private function Prepare$class_name ) : bool 

In meinem Editor (Dreamweaver) wird weiterhin die Zeile 19 rot angezeigt mit der Meldung
Code:
syntax-error, unexpected variable (T_VARIABLE)

das betrifft die Zeile
PHP-Code:
$this->ClassName end$this->NamespaceRoute ); 

und die Zeile 26 mit der selben Meldung wie in Zeile 16.
Zeile 26 ist
PHP-Code:
private function Load() : bool 

Komischerweise tauchen die Fehler bei den anderen Funktionen nicht auf.

Meine PHP-Version ist 7.0.31

Wie kann ich diesen Fehler fixen. Ist es sinnvoll die Typendeklaration am Ende der Funktion zu entfernen?

Danke schonmal für Eure Antworten.
Jörg


RE: PHProcksAutoloader liefert Parse error - Arne Drews - 27.08.2018

Hi,

Sorry für die späte Antwort, ich war etwas beschäftigt die letzten Tage.

Die Typendeklaration kann man entfernen, die besagt an der Stelle nur, dass die Methode einen boolean als Rückgabe wert sendet.
Ich gehe mal davon aus, dass das erst mit einer PHP Version ab 7.1 oder 7.2 möglich ist, da bin ich mir grad nicht sicher. Ich nutze die 7.2 und dort ist das eine reguläre Angabe.

Was Dreamweaver angeht, so wird er denke ich mal nur zu wenige Informationen an der Stelle haben, weshalb er das als unerwartet markiert.
Ein Fehler sollte daraus nicht resultieren.

Der Autoloader wurde auf einer 7.2er PHP geschrieben und funktioniert dort fehlerfrei.
Wie gesagt, kannst Du die Angabe des Rückgabe-Datentyp ruhig entfernen, das sollte schon alles sein.

Was natürlich merkwürdig ist, dass er die Methoden mit Rückgabe : string nicht anmeckert. Kann vielleicht auch sein, dass WP eigene Autoloader mit meinen kollidieren?!
Das kann ich so nicht testen, da fehlende WP-Umgebung. ;-)

Gruß Arne


RE: PHProcksAutoloader liefert Parse error - jaderbass - 29.08.2018

Hallo Arne,

vielen Dank für die Antwort. Ich habe jetzt die Typisierung rausgenommen. Mal sehen ob der Error-Log nochmal anspringt, ich denke aber, dass das Skript jetzt funktionieren wird.

Auf dem Server ist momentan nur PHP 7.1 möglich. Kann evtl. der Grund sein.

Gruß
Jörg


RE: PHProcksAutoloader liefert Parse error - Arne Drews - 29.08.2018

Ja, ich bin mir gar nicht so sicher, dass es an der 7.0 liegt. Ich vermute tatsächlich eher ein WP-Konflikt, warum auch immer ?!
Wenn es an der PHP-Version liegen würde, müsste er eigentlich auch die : string-Typisierung anmeckern. Er tut das aber ja scheinbar nur bei : bool.