Sven Rautenberg: Constructor in einer Methode der Klasse erneut aufrufen?

Beitrag lesen

Moin!

Ich halte es für sehr kritisch, im Konstruktor intensivere Arbeiten zu erledigen. [...] Das Instanziieren einer Klasse sollte außer dem Speicherverbrauch für das neue Objekt und den notwendigen Operationen, um die Konstruktor-Parameter zu sichern, keinerlei Ressourcen benötigen. Das Instanziieren ist Teil des Wiederherstellen des Bauplans der Objektabhängigkeiten, damit danach dann die Applikation aktiv werden und die jetzt arbeitsfähigen Methoden benutzen kann.

bezieht sich diese Aussage nur auf PHP oder auf alle Sprachen? Inwiefern verhält sich diese Aussage dann zum RAII-Idiom?

Nur auf PHP. PHP hat Mechanismen, RAII bzw. genauer die Freigabe von Ressourcen ohne Programmierereingriff sicherzustellen. Die die Situation sieht für PHP im Web-Kontext sowieso anders aus, als für andere Sprachen, weil jeder Request bei Null startet. Man hat also einen Vorteil, Dinge nur dann zu tun, wenn der aktuelle Request sie wirklich erfordert.

Abgesehen davon wäre das Beispiel der Datenbank-Verbindung vermutlich auch in langlaufenden kompilierten Programmiersprachen jeweils "anders" gelöst worden als simpel in einem Konstruktor. Begriffe wie Connection-Pool kommen mir da in den Sinn, ohne dass ich da in die Tiefe gehen würde.

- Sven Rautenberg