tami: Bug oder Feature?

Beitrag lesen

hi,

Da in der Klasse "Search" die Konstruktorfunktion "__construct" nicht mehr explizit notiert ist (sie steht ja jetzt in der Elternklasse "Plugin"), versucht PHP5 wie seinerzeit in PHP 4 die anscheinend gleichlautende private Funktion "search" als Konstruktorfunktion zu verwenden, auch wenn die Groß-/Kleinschreibung sich unterscheidet und obwohl durch die Vererbung eine explizite Konstruktorfunktion namens "__construct" gegeben ist.

Komisch. Ich dachte, dass man 1. keine Konstruktorfunktion braucht und 2. die des Parent explizit aufgerufen werden müsste ...; dass alles CaseSensitive ist, hat dedlfix ja geschrieben. Ansonsten: http://php.net/manual/de/language.oop5.decon.php, da steht ja alles im Grunde:

" Aus Gründen der Abwärtskompatibilität sucht PHP 5, falls die Klasse keine __construct() Methode beistzt, nach einem Konstruktur des alten Stils, d.h. einer Methode mit dem selben Namen wie die Klasse. Der einzige Fall in dem somit Kompatibilitätsprobleme auftreten können, ist wenn die Klasse eine Methode __construct() definiert, welche jedoch für andere Zwecke benutzt wird.

Im Gegensatz zu anderen Methoden, generiert PHP keinen E_STRICT Fehler, wenn __construct() in einer Kindklasse andere Parameter definiert, als die __construct() Methode der Elternklasse.

Seit PHP 5.3.3 werden Methoden, welche mit dem Klassennamen übereinstimmen, nicht länger als Konstruktoren behandelt, wenn die Klasse sich in einem Namespace befindet. Klassen, welche sich nicht in einem Namespace befinden, betrifft dies jedoch nicht. "

mfg

tami