Erzeugungsmuster: Singleton-Pattern

Beim Singleton-Pattern, einem Entwurfsmuster, geht es um die Anzahl der Instanzen einer Klasse. Mit Hilfe von des Singleton-Pattern wird sichergestellt, dass von einer Klasse nur eine Instanz erstellt werden kann. Klassische Beispiele für die Verwendung des Singleton-Pattern sind Datenbank- oder Logging-Klassen.

Dieses Pattern verhindert das Erstellen von Instanzen durch den Konstruktor. Der ganze Trick besteht darin, Weiterlesen

Veröffentlicht unter Code-Schnipsel, Enwurfsmuster | Tags , , , , , , , , | 1 Kommentar

Design Patterns für PHP: Erzeugungs- bzw. Entwurfsmuster

Wie schon angekündigt, möchte ich den Exkurs durch die Design Patterns für PHP (und andere Sprachen) starten. Der erste Block wird sich mit den Erzeugungsmustern (englisch: Creational Patterns) beschäftigen, zu den folgende Design Pattern zählen:

Erzeugungsmuster werden zum konstruieren (erzeugen) von Objekten in der OOP verwendet, d.h. unter diesem Begriff werden alle Design Patterns zusammengefasst, die sich mit der Erzeugung von Objekten befassen. In der Regel verwendet man in PHP den “new – Operator”. Weshalb also etwas neues entwerfen, wofür PHP bereits etwas mit sich bringt?

Erzeugungsmuster erlauben es dem Programmierer, die Anzahl der instanzierten Klassen zu kontrollieren (Singleton), verzicht auf Abhängigkeit einer konkreten Implementierung (Factory-Method) und das Erstellen von Objekten ohne deren konkrete Klasse zu benennen.

Weiterführende Literatur

Wer sich mit Design Patterns näher auseinandersetzen will, kommt um das Standardwerk der “Gang of Four” nicht herum.

Veröffentlicht unter Enwurfsmuster | Tags , , , , , , , , , , | Hinterlasse einen Kommentar

jQuery – Update der JavaScript library auf Version 1.2.5

Die von mir sehr häufig eingesetzte JavaScript library jQuery, ist vor einigen Tagen in der Version 1.2.5 erschienen. (gefixte Bugs)

JQuery ist eine schnelle, sehr einfach zu verwendene JavaScript-Bibliothek, die DOM-Manipulationen, das reagieren auf Events und Animationen im HTML-Dokument vereinfacht. Eine Unterstüzung von Ajax-Interaktionen ist ebenfalls vorhanden. Durch die Plugin-API ist die Verwendung von eigenen Erweiterungen oder aber auch fertigen Plugins möglich.

Eine schnelle Einarbeitung in diese library ist durch die gute Dokumentation auf der jQuery-Webseite sowie auf http://visualjquery.com/ gegeben.

Ebenfalls ein Update gab es für jQuery UI auf jQuery UI 1.5 (B4). JQuery UI ist ein Satz von Widgets und Interaktionen, basierend auf der jQuery JavaScript-Bibliothek.

Der Kern der Bibliothek dreht sich um verschiedene Maus-Interaktionen, z.B. per Drag and Drop, Sortierung, Auswahl und Größenänderung, sowie eine Reihe von leistungsfähigen Effekten.

Funktionen u.a.: Akkordeon, Datum-Pickers, Dialoge, Regler und Tabs

Unterstützt werden offiziell die Browser IE 6.0+, FF 2+, Safari 2.0+ und Opera 9.0+.

Veröffentlicht unter jQuery - News | Tags , , , , , , | Hinterlasse einen Kommentar

Coming soon: Page-Class inkl. Smarty, Design Patterns, Propel

Leider wird der Berg mit Arbeit bei mir nicht weniger. Einige Projekte warten auf Fertigstellung, neue sind auch schon wieder in der Pipeline.

Für dieses Blog sind in den kommenden Tagen und Wochen folgende Punkte geplant:

  • PHP Design Patterns
    • Erzeugungsmuster (Singleton, Factory, Abstract-Factory)
    • Enterprise-Patterns (MVC, Row-Data-Gateway, Active-Record-Pattern, u.a.)
  • eine Page-Class (unterstützt von Smarty)
  • Vorstellung von Propel mit Beispielanwendung für die Data-Schicht

Alle diese Punkte bauen aufeinander auf, daher werde ich das ganze anhand einer Anwendung in mehreren Schritten vorstellen.

Veröffentlicht unter Allgemein | Tags , , , , , , , , | Hinterlasse einen Kommentar

Aktuelle Zahlen zur Verteilung der Browser bei den Besuchern

Bei einem aktuellen Projekt habe ich mal die Browserverteilung bei den Besuchern ermittelt. Diese Seite hat eine relativ breite Benutzergruppe, so dass die Zahlen als repräsentativ gelten können.

Browserverteilung

Klar zu sehen (zumindest wenn du auf die Grafik klickst):

  • Internet Explorer ist noch immer der Platzhirsch mit gut 54 %
  • Firefox kommt auf ca. 40 %
  • nennenswerte Größen erreichen dann nur noch Safari und Opera mit jeweils etwas über 2 %

Brechen wir das ganze mal auf die Versionen der jeweiligen Browser auf. Hier werde ich mich nur auf den IE Weiterlesen

Veröffentlicht unter Aktuelle Zahlen | Tags , , , , , , | 1 Kommentar

Webseiten-Layout in verschieden Browsern prüfen

Die Welt wäre so einfach, wenn alle Browser sich beim rendern an die Regeln halten würden.

Nicht nur, dass die aktuellen Browser den CSS-Standard unterschiedlich interpretieren, auch verwenden viele User noch alte Versionen. Bei einem aktuellen Projekt habe ich die Browserverteilung bei den Besuchern ermittelt. Diese Seite hat eine relativ breite Benutzergruppe, so dass die Zahlen als repräsentativ gelten können. Diesen Artikel findest du hier: Aktuelle Browserverteilung

Nur zur Übersicht, möchte ich noch eine grobe Verteilung hier zeigen:

Browserverteilung


Seine Projekte mit allen Browser (und unter verschiedenen Betriebssystemen) zu testen ist fast unmöglich. Mehrere Firefox-Versionen nebeneinander ist kein Problem. Weiterlesen

Veröffentlicht unter Design / Layout | Tags , , , , | Hinterlasse einen Kommentar

Automatisches erzeugen von Buttons in PHP mit der GD library

Grafische Buttons (z.B. erzeugter Button) sehen in der Regel besser als die Standard-HTML-Buttons aus.

Allerdings stellt sich immer die Frage: Wer erstellt mir die ganzen Buttons? In der Regel sind es nicht nur 2 oder 3. Was passiert, wenn noch eine weitere Sprache von der Webseite unterstützt werden soll?

Genau für diesen Zweck habe ich mir eine kleine aber feine Klasse geschrieben. Diese verarbeitet GIF-Templates zu einem grafischen Button mit entsprechender Beschriftung, wobei die Breite automatisch angepasst wird. Allerdings ist der Code sehr auf meine Bedürfnisse zugeschnitten – eine Anpassung zur eigenen Verwendung sollte aber relativ Problemlos möglich sein. (Download inkl. Verzeichnisstruktur)

Die Klasse setzt aus 3 GIFs (links, mitte, rechts) einen Button zusammen, wobei die Breite automatisch an den Text angepasst wird. Man kann aber auch eine feste Breite als Parameter übergeben. Der Text wird Weiterlesen

Veröffentlicht unter Komplette Klassen | Tags , , , , , | 1 Kommentar

Class: Form Validator (Formulareingaben einfach überprüfen)

Heute habe ich mal die Zeit gefunden, meine Form Validator Class aufzuräumen – somit kann ich Sie auch der Öffentlichkeit zur Verfügung stellen. (Link zum Online-Demo, Download, Source Code anzeigen)

Die hier beschriebene Version wurde etwas reduziert, u.a. fehlt die checkDoubleSubmit-Funktionalität. Diese wird zu einem späteren Zeitpunkt vorgestellt.

Warum noch eine Form Validator Class?

Es gibt komplette Formularklassen wie Quickform von Pear, die ich auch schon für das ein oder andere Projekt verwendet habe. Quickform ist mit 1 oder 2 Erweiterungen (HTML_QuickForm_Renderer_Tableless, eigene HTML-Element-Klassen) relativ einfach zu verwenden – solange man keine komplizierten Formular-Layouts bzw. Funktionen verwenden möchte. Schön ist hier auch die automatische Generierung von Javascript-Code, der die clientseitige Überprüfung übernimmt. Sobald man jedoch ein flexibles Layout benötigt, ist man mehr mit der Anpassung von Quickform, als mit dem eigentlichen Formular beschäftigt. Dieses Problem haben auch die anderen mir bekannten Formularklassen.

Es gibt natürlich schon einige reine Validator-Klassen im Netz, allerdings waren mir dies meist auch zu unflexibel.

Also blieb mir nur, eine eigene Klasse zu schreiben. (Link zum Online-Demo, Download, Source Code anzeigen)

Welche Funktionen deckt diese Klasse nicht ab?

Die hier vorgestellte Form Validator Klasse ist keine komplette Formularklasse wie Quickform, sondern beschränkt sich (momentan) auf die PHP-seitige Überprüfung von gesendeten Formulardaten.

Eine clientseitige Javascript-Prüfung ist in Vorbereitung, kann aber noch nicht veröffenticht werden. Ebenso wurde wie schon besprochen, die Funktionalität für das Überprüfen auf doppeltes senden des Formulars entfernt – dies stelle ich in einem späteren Artikel vor.

Welche Funktionen deckt diese Klasse ab?

Wichtigster Punkt bei der Entwicklung war dei Flexibilität. Dieses Ziel wurde meiner Meinung nach auch sehr gut erreicht. Die Form Validator Klasse sind eigentlich zwei Klassen: eine Klasse die die Prüffunktionen enthält und die eigentliche Klasse.

In der class FormValidatorFunctions sind momentan Weiterlesen

Veröffentlicht unter Komplette Klassen | Tags , , , , , | Hinterlasse einen Kommentar

Das Zend Framework 1.5.2 ist da

Zend verkündet, die Veröffentlichung von Zend Framework 1.5.2!

Die aktuelle Version ist downloadbar unter: http://framework.zend.com/download

Eine Liste aller beseitigten Probleme/Bugs (49) in dieser Version findest du unter:
http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=10743

Zend Framework ist ein Open-Source-Projekt, am besten bekannt für seine Möglichkeiten zur schnellen und effizienten Erstellung von PHP-Anwendungen. Es wird von einer starke Community begleitet und wird von mehr als 400 Einzel-und Corporate-gesponserten Entwicklern, darunter Microsoft, Fox Interactive Media, IBM und Google, unterstützt. Seit seinem Debüt wurde das Zend Framework über vier Millionen mal heruntergeladen.

Veröffentlicht unter Allgemein, Zend-Framework - News | Tags , , , | Hinterlasse einen Kommentar

Update PHP 5.2.6

Das PHP-Team hat das Update auf PHP 5.2.6 freigegeben. Es wurde viel für die Stabilität getan und über 120 Bugs gefixt, darunter einige sicherheitsrelevante Probleme.

Die Entwickler empfehlen, ein update auf die PHP 5.2.6 – Version zu machen.

Weitere Details zu diesem Release findet ihr unter: release announcement for 5.2.6 und das changeLog hier: ChangeLog for PHP 5.

Security Enhancements and Fixes in PHP 5.2.6:

  • Fixed possible stack buffer overflow in the FastCGI SAPI
  • Fixed integer overflow in printf()
  • Fixed security issue detailed in CVE-2008-0599
  • Fixed a safe_mode bypass in cURL
  • Properly address incomplete multibyte chars inside escapeshellcmd()
  • Upgraded bundled PCRE to version 7.6
Veröffentlicht unter PHP - News | Tags , , , , | Hinterlasse einen Kommentar