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!

1 Star2 Stars3 Stars4 Stars5 Stars (Wurde noch nicht bewertet)
Loading...


Hinterlasse einen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

»Informationen zum Artikel

Autor: Simon
Datum: 08.10.2009
Zeit: 15:38 Uhr
Kategorien: PHP
Gelesen: 5245x heute: 2x

Kommentare: RSS 2.0.
Diesen Artikel kommentieren oder einen Trackback senden.

»Meta