Verwenden von Funktionen zur Initialisierung von Attributen in Klassen
Der Titel hört sich wohl ziemlich verwirrend an. Genauso verwirrt war ich gerade, als ich genau das tun wollte, was im Titel stand. Ich verwendete in einer Klasse folgenden Code:
private $mimetypes = array ( "jpg" => image_type_to_mime_type(IMAGETYPE_JPEG), "gif" => image_type_to_mime_type(IMAGETYPE_GIF), "bmp" => image_type_to_mime_type(IMAGETYPE_BMP), "png" => image_type_to_mime_type(IMAGETYPE_PNG), "tif" => image_type_to_mime_type(IMAGETYPE_TIFF_II), "tiff" => image_type_to_mime_type(IMAGETYPE_TIFF_II), "jpeg" => image_type_to_mime_type(IMAGETYPE_JPEG), "jpe" => image_type_to_mime_type(IMAGETYPE_JPEG), "jpeg" => image_type_to_mime_type(IMAGETYPE_JPEG), "ico" => image_type_to_mime_type(IMAGETYPE_ICO), "svg" => 'image/svg+xml', "svgz" => 'image/svg+xml' );
PHP 5.3 hat mir daraufhin immer folgende Fehlermeldung ausgespuckt:
Parse error: syntax error, unexpected ‚(‚, expecting ‚)‘ in C:\xampp\htdocs\mvc\framework\classes\Validator\Image.class.php on line 5
Diese Meldung hat mich zugegebenermaßen sehr verwirrt. Denn ich konnte beim besten Willen keine Klammer entdecken, die da nicht hingehörte. Aber genau das wollte PHP mir ja klarmachen! Nachdem ich ein bisschen hin und her probiert hatte, fand ich heraus, dass man anscheindend keine Funktionen beim Deklarieren von Attributen verwenden darf.
Möchte man trotzdem einen Wert mit einem Rückgabewert einer Funktion belegen, eignet sich hierfür der Konstruktor hervorragend! Mein Code sieht jetzt also so aus:
private $mimetypes = array(); public function __construct() { $this->mimetypes = array ( "jpg" => image_type_to_mime_type(IMAGETYPE_JPEG), "gif" => image_type_to_mime_type(IMAGETYPE_GIF), "bmp" => image_type_to_mime_type(IMAGETYPE_BMP), "png" => image_type_to_mime_type(IMAGETYPE_PNG), "tif" => image_type_to_mime_type(IMAGETYPE_TIFF_II), "tiff" => image_type_to_mime_type(IMAGETYPE_TIFF_II), "jpeg" => image_type_to_mime_type(IMAGETYPE_JPEG), "jpe" => image_type_to_mime_type(IMAGETYPE_JPEG), "jpeg" => image_type_to_mime_type(IMAGETYPE_JPEG), "ico" => image_type_to_mime_type(IMAGETYPE_ICO), "svg" => 'image/svg+xml', "svgz" => 'image/svg+xml' ); }
Das funktioniert dann auch 🙂
Ich hoffe, dass ich euch mit diesem Artikel diesen Fehler ersparen konnte!
Schreibe einen Kommentar