Tach!
Sofern nicht anders angegeben beziehe ich mich im folgenden nicht speziell auf eine bestimmte Sprache.
In c++ und in Perl wird die Instanz der Klasse mit dem Konstruktor erzeugt. In beiden Programmiersprachen gibt es auch den Destruktor.
So wird es allenthalben verkündet. Ich denke, es ist angebracht zwischen dem Teil, der ein Objekt instantiiert und der Methode, die danach vom System aufgerufen wird, zu unterscheiden. Auch andere Sprachen können nur dann auf Instanzmitglieder zugreifen, wenn die Instanz existiert. Somit ist ein Konstruktor, der nach dem Instantiieren aufgerufen wird immer eine Instanzmethode.
Weiterhin gibt es (vielleicht nicht in allen Sprachen) statische Teile in Klassen. Auch statische Konstruktoren sind bekannt (z.B. C#), welche aber nur auf statische Teile der Klasse zugreifen können. Statische Konstruktoren werden zum Programmstart aufgerufen. (Ob es davon Abweichungen gibt, ist mir nicht bekannt. Sinnvoll wärte es jedenfalls, dass die statischen Teile intialisiert sind, bevor der Rest vom Programm darauf zugreift.)
Auch Destruktoren sind genau genommen nur spezielle Methoden, die vor dem Aufräumen durch das System aufgerufen werden und sich nicht selbst wegräumen sondern nur die vom Objekt (nebst seiner Konstruktor-Methode) erzeugten Teile.
Des Weiteren macht es in Perl auch gelegentlich Sinn, den Konstruktor so zu programmieren, dass dessen Aufruf über eine bereits erzeugte Instanz einen Clone zurückgibt
Clone sind auch unter PHP gelegentlich sinnvoll und bei Objekten möglich. Auch dabei kann (aber muss nicht) es eine speziell benannte Methode geben, die nach dem Erzeugen der Kopie aufgerufen wird. Die Kopie ist natürlich eine neue Instanz und die spezielle Methode hat ähnliche Aufgaben wie die Konstruktor-Methode, weswegen sie auch Copy-Konstruktor genannt wird. Aber auch hier ist diese Methode nicht notwendig, um eine Instanz zu erzeugen sondern ebenfalls nur optionales Beiwerk.
in diesem Fall erwartet der Konstruktor entweder den Namen der Klasse oder er ermittelt den Namen der Klasse selbst anhand der übergebenen Instanz. Ergo ist der Konstruktor in Perl keine Instanz(Objekt)-Methode, auch dann nicht, wenn er eine Instanz übergeben bekommt: Aus dieser wird lediglich der Name der Klasse ermittelt.
Vielleicht ist dieser spezielle Konstruktor eine Klassenmethode, aber eine "ganz normale" Konstruktor-Methode kann nur eine Instanzmethode sein, weil sie auf die Instanz angewiesen ist. Auch PHPs __clone()-Methode (der Copy-Konstruktor) kann nur eine Instanzmethode sein, weil auch zu dessem Aufruf die Instanz bereits kopiert sein muss. Die Kopie selbst wird aufgrund des Schlüsselwortes clone erzeugt.
Dass der Kontruktor in PHP eine völlig andere Bedeutung hat, wusste ich bis gestern tatsächlich nicht.
Völlig anders ist die Bedeutung nicht, aber man kann eben nicht mit Nichtwissen auf die Gegebenheiten einer anderen Sprache schließen und diese als ganz selbstverständlich darstellen.
dedlfix.