Autor : David Fuhr

About David Fuhr

Here are my most recent posts

symfony
Track Memory Usage and Runtime of Symfony Commands

If you write lots of Console Commands in your Symfony application you sure want to know more about their memory and time consumption. To collect the necessary data you can make use of the Stopwatch Component:

Mehr lesen
php
UML-Diagramme aus Text mit PlantUML

Jeder Entwickler weiß, dass Diagramme oft helfen, über Inhalte zu sprechen. Aber Lust sich in eines der grafischen Tools einzuarbeiten, hat man dann meist doch nicht. Jedes verwendet einen anderen Standard und andere Konventionen, um im Wiki darüber zu reden muss man das Diagramm mühsam als Bild exportieren und eigentlich schreibt man ja am liebsten Code und klickt eher ungern.

Mehr lesen
git_branche
Erfolgreiches Git Branching-Modell

Dieser Beitrag ist eine Übersetzung des Artikels „A successful Git branching model“ von Vincent Driessen. Alle Bezüge auf „ich“, „wir“ usw. gelten daher aus seiner Perspektive.

In diesem Beitrag möchte ich das Entwicklungsmodell vorstellen, das ich vor ungefähr einem Jahr für alle meine Projekte (sowohl berufliche als auch private) eingeführt habe und das sich als sehr erfolgreich erwiesen hat. Ich wollte schon seit einiger Zeit darüber berichten, habe bisher jedoch nie wirklich die Zeit gefunden, das auch gründlich zu tun. Ich werde dabei die Projektdetails auslassen und stattdessen nur über die Branching-Strategie und das Release-Management schreiben.

Hier wird der Schwerpunkt auf Git als Tool zur Versionierung unseres gesamten Quellcodes gelegt.

Mehr lesen
shutterstock_308059304
Mime-Type-Problem mit PHP Autoload

Als ich mir heute mit PHP Autoload (phpab) meine Autoload-Datei neu generieren ließ, war ich bass erstaunt. Statt der üblichen 700 Klassen waren plötzlich nur noch 15 Dateien enthalten.

Mehr lesen
shutterstock_308059304
ISO-8601-Stolperfalle bei Zend_Date

Jeder der mit Datumswerten gearbeitet hat, weiß (oder sollte zumindest) um die kleinen und großen Untiefen wie Zeitzonen, Zeitumstellung und Schaltjahre die es dabei zu umschiffen gilt. Neben der seit PHP 5.2 verfügbaren DateTime-Klasse gibt es im Zend Framework die ältere Zend_Date-Komponente. Mit beiden lässt sich die Handhabung von Datumswerten in einer Applikation vereinfachen und vereinheitlichen:

Mehr lesen
shutterstock_308059304
PHP 5.4: Die wichtigsten Änderungen

Vor einigen Tagen war es soweit: PHP 5.4 wurde veröffentlicht. Die Anzahl der Änderungen sind, im Vergleich mit PHP 5.3, überschaubar, aber dennoch sollte man sie kennen. Die wichtigsten Änderungen kurz zusammengefasst:

Einige Code-Beispiele zu den Änderungen sind im zugehörigen Git-Repository: https://bitbucket.org/flagbit/php54.

Die Informationen zu Traits und dem Diamond-Problem sind im seperaten PDF.

Mehr lesen
php
Vorsicht bei der Verwendung von isset() mit Arrays

Manchmal sucht man Fehler, die man wieder und wieder überliest, weil man die falschen Annahmen getroffen hat und der Code oberflächlich richtig aussieht. Erfahrungsgemäß gibt es dann ein paar „übliche Verdächtige“, die man sich genauer anschaut. Zuweisungen im if-Statement, Vergleiche ohne Typprüfung, empty() und isset() sind dabei immer heiße Kandidaten.

Wenn man die Handbuch-Seite zu isset() durchliest, klingt es, als wäre es problemlos möglich auch die Existenz von Array-Keys zu prüfen. Sogar ein schönes Beispiel gibt es dazu:

Doch ganz so einfach ist es leider nicht.

Mehr lesen
php
Grep für Application-Logs

Bei der Fehlersuche bieten einem die Application-Logs oftmals einen guten Einstiegspunkt. Doch die Suche darin kann zum Teil recht mühsam sein. Vor allem wenn man nicht nach der Fehlermeldung selbst suchen will, sondern zum Beispiel alle Fehler haben will, die einen bestimmten Methodenaufruf im Stacktrace haben. Und dann wollte ich auch nicht nur die Zeile haben, sondern den ganzen Log-Eintrag, inklusive Message und komplettem Stacktrace.

Mehr lesen
shutterstock_308059304
Startschwierigkeiten PHP-CLI auf Windows mit cURL

Schon seit längerem nervt mich, dass das PHP-CLI auf meinem Windows-Rechner etwa drei Sekunden braucht, bevor es überhaupt anfängt irgendetwas zu tun:

Mehr lesen
mk
MySQL-Tabellen mit mk-archiver archivieren

Wenn man temporäre Logdaten in eine Datenbank schreibt, muss man sich früher oder später damit beschäftigen, wie man die auch wieder effizient herausbekommt. Im Normalfall will man die Daten auch nicht einfach löschen, sondern verschieben um später wieder darauf zugreifen zu können.

Mehr lesen
1 2