dedlfix: Fatal Error abfangen

Beitrag lesen

Tach!

Offensichtlich besteht in PHP-Kreisen absolut kein Bedarf, Methoden so auszulagern, dass deren Source erst auf Anforderung kompiliert wird.

Offensichtlich besteht kein Bedarf daran, die Dinge auch noch in die Richtung zu verkomplizieren. Zudem geht das bereits, indem man in den Rumpf ein require_once schreibt und den Code der Methode (oder auch einer Funktion) dorthin auslagert.

Wozu das Auslagern gut sein kann: Es verringert den Overhead, der beim Kompilieren der Source einer Klasse besteht, insbesondere dann, wenn die Klasse sehr viele Methoden bereitstellt.

Hast du das durch Tests nachvollzogen oder ist das einfach nur so ins Blaue hineingeraten?

Vor einiger Zeit diskutierten einige PHP-Verwender, ob es besser sei, alle verwendeten Code-Dateien mit require_once einzubinden oder einen Autoloader zu schreiben, der erst bei Bedarf die Quelldatei nachlädt. Das Hauptargument war dabei immer der (gesparte) Dateizugriff. Wenn du nun viele Teile auslagerst, kostet das am Ende eventuell sogar mehr als der zusätzliche Parse-Aufwand. Ich hab diese Diskussion nur am Rande verfolgt und Messergebnisse sind mir auch keine in Erinnerung. Inwieweit das also wirklich relevant ist, würde ich erst im Bedarfsfall analysieren wollen. Bis dahin nehme ich den Autoloader aus Bequemlichkeit, weil ich mir dadurch das Pflegen der require_once-Statements spare.

Klasse Foo hat eine Methode foo(). Klasse Bar erbt von Klasse Foo alle Methoden und in Klasse Bar wird die Methode foo() überschrieben.
Kompiliert werden die Klassen Foo und Bar und damit alle Methoden der Basisklasse und alle Methoden der Subklasse. Wenn jedoch Foo::foo() ausgelagert ist, wird die nicht kompiliert. Kompiliert wird in diesem Fall nur die in der Subklasse überschriebene Methode.
Haben eingefleischte PHP-Programmierer dafür eine andere Lösung?

Ordentliches Klassendesign, anwendungsfallspezifisch. Dazu Autoloader.

Die große Frage ist aber: Wieviel kostet das Zerhackstücken des Codes an Wartungsaufwand und wieviel Gewinn bekommt man durch diese vermutlich doch nur sehr geringe Optimierung.

dedlfix.