Einträge getaggt mit ‘PHP’

Custom Factories RFC für den PHP Kern

geschrieben am 22.11.2009 von Stephan Hochdoerfer

Dank Robert Lemke vom Typo3 Projekt gibt es seit einigen Tagen einen RFC für sog. Custom Factories für PHP. Die grundsätzliche Idee des RFC ist es via SPL die Objekterzeugung beeinflussen zu können, ähnlich wie es bsp. mit spl_autoload möglich ist eigene Klassenloader zu definieren. Er möchte damit Einschränkungen in Legacy Bibliotheken aufbrechen die es aufgrund von fest verdrahteten Abhängigkeiten nicht möglich machen eigene Komponenten innerhalb der Legacy Bibliothek zu verwenden. Im aufgeführten Beispiel wird dies gut anhand eines Logger-Beispiels aufgezeigt. Im Grunde halte ich die Idee für recht interessant. Ich denke viele Entwickler sind in der Vergangenheit über das Problem gestoßen dass sich Frameworks oder Bibliotheken von Drittanbietern an machen Stellen nicht optimal in die eigenen Anwendungsstrukturen einbinden lassen konnten bzw. es nur sehr umständlich möglich war eine Integration zu erreichen.

Etwas verwundert bin ich allerdings über die Beispiele mit der ObjectFactory, so schreibt er “If the mechanism of Dependency Injection is consequently used, this results in a lot of additional typing and many classes will need the ObjectFactory getting injected by the surrounding framework” . Dem kann ich leider nicht zustimmen. Das verwendete Framework sollte dem Entwickler alle Injection-Arbeiten abnehmen und statt der ObjectFactory die notwendigen Referenzen auf die real benötigen Klassen übergeben. Der Domaincode sollte m.E. so gut wie frei von Abhängigkeiten zu Frameworkklassen sein. Ich möchte weder in meinem Programmcode Objekte mit dem new Operator erzeugen noch abhängig zu Factories sein die das ganze für mich erledigen. Des weiteren halte ich es für extrem wichtig die Objektkonfiguration von der Implementierung zu trennen, denn nur so erreicht man eine maximal mögliche Wiederverwendung. Annotations im Programmcode oder das automatische Finden der Abhängigkeiten anhand von implementierten Interfaces scheint mir keine sinnvolle Umsetzung von DI zu sein.

XDebug mit mehreren Usern

geschrieben am 11.06.2009 von Stephan Hochdoerfer

Gefunden via planet-php.org: Derik hat in seinem Blog ein Howto veröffenlicht das erläutert via man via dbgproxy mit mehreren Usern gleichzeitig eine XDebug zum Remote-Debuggen nutzen kann. Die Möglichkeit war mir bislang nicht bekannt und von daher das Interesse groß das ganze einmal auszuprobieren. Den ganzen Beitrag lesen »

File stream wrapper on steroids

geschrieben am 01.04.2009 von Stephan Hochdoerfer

Gefunden via planet-php: Alex Netkachov zeigt wie man den internen File stream wrapper überschreiben kann.Sehr nett, vor allem eine weitere interessante Idee für meinen Vortag beim nächsten DevDusk.Mit dieser Technik lassen sich prinzipiell beliebige Dateien zur Laufzeit includen, abhängig von der Implementierung der StreamWrapper Klasse. Man könnte es wohl als “Erweiterung” zu der autoload Funktionalität sehen wobei sich diese ja “nur” auf das Einbinden von Klassen bezieht.

Dependency Injection everywhere

geschrieben am 28.03.2009 von Stephan Hochdoerfer

In den letzten Monaten wurden in einigen Blogs immer mal wieder Beiträge zum Thema Dependency Injection (DI) in PHP verfasst. In einem aktuellen Beitrag von Fabien Potencier, dem Lead-Entwickler von Symfony, stellt er die These auf dass man mitunter keinen IoC Container benötigt um grundsätzlich vom DI Ansatz zu profitieren. Diese Ansicht kann ich nicht teilen. Aus seinem Beispiel und auch den Beispielen aller anderen Blogbeiträge wird der Nutzen von DI, vor allem im Rahmen eines kompletten Frameworks, meines Erachtens nicht klar genug dargestellt. Das Thema ist natürlich viel zu komplex um in einem kurzen Blogeintrag behandelt zu werden. Die Vorteile von DI sind schließlich vielfältiger Natur. Zu erkennen wie sauber der eigene Programmcode werden kann, wie einfach sich die einzelnen Schichten einer Anwendung testen lassen oder was die Austauschbarkeit einzelner Komponenten zur Laufzeit bedeutet, braucht seine Zeit. Das zeigt zumindest meine Erfahrung aus den letzten drei Jahren täglicher Arbeit mit DI mit unserem bitFramework.

Copy & Paste Detection für PHP

geschrieben am 15.03.2009 von Stephan Hochdoerfer

Gefunden via Sebastian Bergmann`s Blog: phpcpd – ein Copy & Paste Detector für PHP Code. Installiert wird das ganze via PEAR Installer. Nach einem ersten schnellen Test an unserem bitFramework freut es mich 0.00% duplizierten Code vorzufinden. Ich hatte auch schon länger vor auf Basis des PHP_CodeSniffers etwas ähnliches zu programmieren, mangels der nötigen Freizeit blieb es bisher bei dieser Idee.

Wer übrigens mehr zum Thema PHP_CodeSniffer wissen möchte sollte mal bei Nils vorbeischauen. Er bloggte in der letzten Woche ausführlich zum Thema PHP_CodeSniffer.