Archiv der Kategorie ‘PHP’

Zend Framework für PHP

Soeben habe ich entdeckt(PHP-Bibliothek in stabiler Version zum Download), dass Zend sein bereits 2005 angekündigtes Framework für PHP nun in der Version 1.0 freigegeben hat. Downloaden kann man es unter http://framework.zend.com/

Bemerkenswert ist, dass dies endlich ein freies, rein Objektorientiertes Framework von professionellen Entwicklern ist. Es ist sauber programmiert und auf Benutzerfreunlichkeit geachtet worden und stellt als einzigstes mir bekanntes Framework wirklich das bereit, was eine moderne professionell programmierte Webaplikation braucht. Und, wie auf anty.at erwähnt wurde, haben die Zend Entwickler natürlich sowieso allgemein sehr viel Ahnung von PHP. Außerdem ist eine Deutsche API Dokumentation verfügbar.

PHP Exceptions Formatieren

Ein Webdesigner, der gelegentlich mit PHP arbeitet und z.B. die in PHP 5 neu hinzugekommenen Erweiterungen wie MYSQLi nutzt oder vielleicht sogar komplett Objektorientiert programmiert, bekommt hin und wieder mal eine Exception um die Ohren geworfen. (Mehr über PHP Exceptions)
Auf den ersten Blick sind diese relativ unübersichtlich und kaum leserlich – mit einem einfachen “Trick” lassen sich diese Fehlermeldungen aber leicht formatieren. PHP stellt dafür den Befehl set_exception_handler() bereit. diesem Befehl übergibt man einen beliebigen Funktionsnamen. PHP wird somit angewiesen im Falle einer nicht anderweitig gefangenen Exception diese Funktion aufzurufen.
In dieser Funktion kann man nun ganz normal auf die Exception zugreifen, Daten auslesen und ausgeben. Mit ein paar einfach HTML Tags lassen sie sich relativ komfortabel gestalten, sodass sie etwas übersichtlicher sind. Folgender Beispielcode kann einfach in die Hauptdatei (z.B. index.php) integriert werden und schon werden nicht gefangenen Exceptions schön formatiert ausgegeben.

PHP Entwurfsmuster :: Singleton

Wie schon in unserem Artikel vom Niemand zum Hacker geschrieben, arbeiten wir seit geraumer Zeit mit Entwurfsmustern. Seit der Version 5, bietet PHP nahezu alle OO-Fähigkeiten, wie die etablierten Objekorientiereten Sprachen Java oder C++. Der Anwendung von Entwurfsmustern steht so also nichts mehr im Wege. Ich werde hier nicht darauf eingehen was Entwurfsmuster sind, dass werden wir in kürze in einem eigenen Blogbeitrag nachholen.

Das Singleton. Das Singletonmuster gewährleistet, dass immer nur eine Instanz einer Klasse zur Laufzeit existiert.

PHP Benchmark Environment Tool

Ab heute gibt es im ilimitado Lab unser neustes PHP Script. Das Tool ist eine komfortable Benchmark Umgebung für PHP Code.

Wir haben also ein kleines PHP Tool geschrieben. Es führt PHP Code über die PHP eval Funktion in einer for
Schleife immer wieder aus und misst die Laufzeit. Diese wird ausgewertet in einer Tabelle.
Es sei darauf hingewiesen, dass es sich dabei um ein “quick and dirty” Script handelt, es funtioniert, läuft stabil und erfüllt seinen Zweck. Es ist jetzt aber nicht sonderlich professionell oder schön programmiert…

PHP Benchmark preg_match vs. DOM

In PHP kann man Daten aus einer XML Datei auf mehrere Wege auslesen.
Der bekannteste Weg führt über die PHP DOM Functions, der DOM Level 2 API von PHP. Hierbei wird das XML Dokument geparst und als Objekt in den Arbeitsspeicher geladen. Möchte man nun auf Elemente und Daten der XML Datei zugreifen, kann mann über XPATH oder der DOM API schnell und einfach an die Daten heran kommen und diese zum Beispiel in PHP Variablen speichern und damit weiterarbeiten.

Bilder in zufälliger Reihenfolge

Für ein kleines Kundenprojekt kam uns die Idee, Logos von Sponsoren pro Seite in zufälliger Reihenfolge auf einer Homepage zu platzieren. So ist keiner der Sponsoren benachteiligt, da die Bilder pro Aufruf einfach zufällig positioniert werden.

Das zugehörige PHP-Script ist sehr einfach und universell einsetzbar. Es wird die PHP-Funktion shuffle benutzt, diese Funktion mischt die Reihenfolge der Elemente eines Arrays zufällig durch. Was man also nur braucht, sind die Bildnamen. Diese speichert man in einem Array, welches per shuffle umsortiert wird und dann ausgegeben:

Tag und Nacht Zyklus für Homepages

Schon gewusst, wann heut die Sonne untergeht, und wann sie in New York heut morgen aufging ;-)

Wir haben diese Woche was nettes, kleines, lustiges programmiert, ein PHP “dynamic day and night cycle script”.

Performance Vorteil Output Buffer

Während der Programmierung eines PHP Skriptes bin ich auf die PHP-Funktion ob_start() gestoßen. Diese Funktion aktiviert den PHP Output Buffer, welcher Ausgaben eines PHP Skriptes buffert (zwischenspeichert) und nicht direkt an den Browser sendet. Erst nach Aufruf von ob_end_flush() wird der Output Buffer geleert und der Inhalt an den Browser geschickt.

Soweit die Theorie. Jetzt stellt sich die Frage “Wann bringt der Einsatz des PHP Output Buffer ob_start() einen Geschwindigkeits- oder Performance Vorteil?”
Dieser Frage geht folgender kleiner PHP Benchmark auf den Grund:

Wordpress Sicherheit vs. ilimitado

Als ich heute Morgen aufgestanden bin und hatte ich ein interessantes Digg RSS Feed ganz oben und zwar:

Wordpress 2.1.1 Security Hole Leaves Blogs Wide Open

Beim lesen des Artikels wurde dann klar, dass das mit dem Upgrade schnell gehen musste. Was war passiert? Ein Cracker hatte sich auf einem der Wordpress Mirrors User Rechte verschafft und zwei Dateien im wp-inlcude Ordner der 2.11 Version modifiziert. Die Veränderung hat anscheinend weitreichende folgen, weil hierdurch eine remote PHP execution möglich ist. Für alle Leute die also noch die Version 2.11 verwenden bedeutet dies, dass es nur eine Frage der Zeit ist bis Skripte auftauchen die versuchen werden, diesen Exploit aus zu nutzen.