Frage

Ich bin auf einem PHP-4-Server stecken, und ich würde ein altes Erbe Projekt modernen Design Patterns starten wie Verschieben, einschließlich Dependency Injection. Gibt es Dependency Injection Frameworks, die mit PHP 4?

arbeiten
War es hilfreich?

Lösung

i gefunden diese (Tropf), aber es sieht aus wie es nicht in ein paar aktualisiert Jahre.

Andere Tipps

Die meisten Dependency Injection-Frameworks verwenden Reflexion Abhängigkeiten zu bestimmen. Da PHP4 typehints nicht hat, kann man nicht wirklich tun. Einige Male eingebettet in Kommentaren im Code (oft als Anmerkungen) - Experimente wurden mit der Verwendung von Konfigurationsdateien gemacht. Während dies funktioniert, finde ich es etwas klobig. Meiner Meinung nach, sind Sie besser dran PHP dynamische Natur zu Ihrem Vorteil, als zu versuchen, und statisch typisierte Lösungen für sie gelten. Sie können einen langen Weg mit handgearbeiteten Fabriken erhalten. Siehe zum Beispiel diesen Beitrag auf, wie .

Ich glaube nicht ein Dependency Injection-Framework wirklich auf PHP arbeiten wird wegen der Art und Weise objektorientierte Programme darin strukturiert sind. Zunächst einmal ist es nicht wie C # oder Java, wobei die Binärdateien bereits vorhanden sind, und Sie müssen nur einen Weg finden, um dieses Objekt zu instanziieren und es in eine anderen zu injizieren. PHP muss die Klassendateien laden und sie zu interpretieren, bevor sie sie verwenden können. Also, wenn Sie tiefe Vererbungshierarchien mit PHP haben ich glaube nicht, das ist eine gute Idee.

Da PHP eine Skriptsprache ist, ist es am besten, es so, dass nutzen - eine Skriptsprache. Was bedeutet, würde ich nur Verwendung von einfachen Fabrik oder Generator-Methoden machen etwas ähnliches wie Dependency Injection zu tun. Ich würde es mit einem DI-Rahmen nicht zu belasten, die nur die PHP-Laufzeit für jede Web-Anfrage bearbeiten muss das Material addiere werden (es sei denn, Sie Opcode-Caching zu tun, aber es wird immer noch Overhead ist, dass nicht von Web-Plattformen für Java entstanden und. NETZ). Wenn ich, um die Objekte zu ändern, die in Objekte eingespritzt werden, oder wie sie erstellt werden, wäre es eine einfache Aufgabe sein, nur das Skript zu bearbeiten, die die Fabrik / Generator-Methoden enthält. Keine Notwendigkeit, neu zu kompilieren es trotzdem. Also ich habe Flexibilität und ich habe eine leichtgewichtige Architektur, die für die PHP Art und Weise, Dinge zu tun geeignet ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top