dedlfix: Klassen Konstanten zu laufzeit definieren?

Beitrag lesen

Tach!

interessanter als Klassen automatisch zu laden, ist das automatische Laden von Methoden aus dem Dateisystem, die erst dann compiliert werden wenn sie gebraucht werden.

Das ist nicht der Weg, der PHP-üblich ist. Man kann das zwar erreichen, aber dazu braucht man die Extension runkit, die nicht zum Lieferumfang gehört.

Damit wird dein Code übersichtlicher, effizienter und du vermeidest Redundanzen.

Vermutlich ist der Aufwand, die entsprechende Datei zu suchen und zu laden und die Methode einzubinden größer, als den Code gleich mit zu compilieren.

Zudem, wenn man auf die Idee kommt, Methoden optional nachladbar zu machen, sollte man sich eher fragen, ob das überhaupt eine Methode der Klasse sein muss oder nicht vielleicht eine eigenständige Funktionalität ist, der man lieber eine eigene Klasse spendiert. Dann könnte man nämlich diese mit dem sowieso schon vorhandenen Autoloader genauso wie alle anderen Klassen laden lassen und braucht keine zwei Mechanismen.

Natürlich können solche Methoden auch selbst weitere Module und Code einbinden. Wichtig ist der Performanze wegen, die Dateien solcher Methoden nicht bei jedem Aufruf neu zu compilieren sondern nur einmal beim ersten Aufruf.

Das geht vielleicht mit Perl. Thema ist aber PHP. Der Kompilierprozess ist nicht beeinflussbar. Mittlerweile gibt es auch einen eingebauten OpCode-Cache, der die Notwendigkeit des erneuten Kompilieres bei jedem Script-Aufruf überflüssig macht. Aber auch für den gibt es keine Möglichkeit, ihn zu Fuß zu steuern, der arbeitet ganz von allein im Hintergrund.

dedlfix.