Alle Artikel in: Codeschnipsel

PHP 5: Mit Namespaces Kollisionen zwischen Klassennamen verhindern

Problem Sie nutzen in Ihrer Applikation diverse Bibliotheken oder Frameworks und wollen Konflikte zwischen eigenen Klassen und Framework-Klassen mit identischen Namen vermeiden. Sie möchten dabei aber nicht den in PHP häufig angewandten Kompromiss eingehen und den Klassennamen verkomplizieren (z.B. MeinProjekt_MeineTeilanwendung_Meine-Klasse). Lösung Durch die Verwendung von Namespaces, die ab PHP 5.3 zur Verfügung stehen, können Sie eine saubere Trennung der Namensräume erreichen, ohne den Klassennamen künstlich zu verkomplizieren. Das folgende Codebeispiel zeigt, wie das aussehen könnte: namespace net\php\pear\Date { class DateTime { public function __construct() { print __CLASS__ . “ created\n“; } } } namespace de\oreilly\phpckbk { class DateTime { public function __construct() { print __CLASS__ . “ created\n“; } } $oreillyDateTime      = new DateTime(); use net\php\pear\Date; $pearDateTime         = new Date\DateTime(); $phpDateTime          = new \DateTime(); print_r($phpDateTime); } Wie Sie sehen, werden im gezeigten Codebeispiel drei Klassen mit identischem Namen (DateTime) verwendet. Wir selbst bewegen uns im Namensraum de\oreilly\phpckbk und haben dort die Klasse DateTime definiert. Diese kann also ohne weitere Namensraumangabe instantiiert werden. Durch Angeben des entsprechenden Namensraums können wir genauso einfach …

Was ist Erlang?

Erlang ist eine Programmiersprache, von einem Team um Joe Armstrong bei der schwedischen Telekommunikationsfirma Ericsson entwickelt wurde. Benannt wurde sie nach dem dänischen Mathematiker Agner Krarup Erlang, kann aber auch für Ericsson language stehen. Wird von Erlang gesprochen, wird meist nicht nur von der relativ kompakten Sprache gesprochen, sondern auch vom Laufzeitsystem und der umfangreichen Bibliothek. Dieses System nennt man dann Erlang/OTP, wobei OTP für The Open Telecom Platform steht. Es handelt sich dabei um eine Middleware zum Bau von verteilten, hochverfügbaren Systemen. Ursprünglich wurde Erlang für die  Programmierung von Anwendungen in der Telekommunikation geschaffen, hauptsächlich für die Vermittlungsstellen von Telefonnetzen. Schöner erklärt, was Erlang eigentlich ist, wird es in Erlang: The Movie Bei O’Reilly ist soeben das englischsprachige „Erlang Programming“ erschienen. Hier noch ein kurzes Interview mit dem Autor des Buches:

CSS-Sprechstunde für Power-User – Attribute: Der Selektor der Zukunft

Wenn es um die Gestaltung von Formularen geht, hauen einen Typ-Selektoren nicht unbedingt vom Hocker. Schließlich wird für Textfelder, Radiobuttons, Checkboxen, Passwortfelder und Buttons das gleiche HTML-Tag benutzt: <input>. Eine Breitenangabe von 200 Pixeln mag für ein Textfeld sinnvoll sein, Ihre Checkboxen sollen aber vermutlich nicht ganz so groß ausfallen. Das heißt, Sie können nicht einfach schreiben: input { width: 200px; }. Momentan besteht die verlässlichste Methode darin, Textfelder mit einer eigenen Klasse zu markieren, z.B.  <input type=“text“ class=“textfeld“ name=“email“ />. Über den entsprechenden Klassen-Selektor können dann eigene Stilregeln definiert werden. Vermutlich schon bald können Sie allerdings den Attribut-Selektor für diese Aufgabe verwenden, der wesentlich mehr Möglichkeiten bietet. Ein Attribut-Selektor wählt ein HTML-Element anhand seines Attributs aus. Bei <input>-Tags bestimmt der Wert des Attributs type, welche Art von Formularelement tatsächlich erzeugt wird. Für ein Textfeld ist dies beispielsweise der Wert text. Um den Hintergrund für alle einzeiligen Textfelder blau einzufärben, könnten Sie die folgende Regel verwenden: input[type=“text“] { background-color: blue; } Wenn Sie den Attributwert im obigen Beispiel von text in submit ändern, wird stattdessen …

Häufig gestellte Fragen zu CSS: Hierarchische Untermenüs

Wie erstelle ich diese coolen Untermenüs, die erscheinen, wenn ich mit der Maus über einen Button fahre? Navigationsleisten mit mehreren Menüebenen, die bei Bedarf herausfahren oder aufklappen, sind äußerst beliebt. Sie bieten eine ideale Möglichkeit, eine Menge Links in eine kompakte Navigationsleiste zu packen. Hierfür gibt es mehrere Herangehensweisen. Zuerst die reine CSS-Lösung. Ein sehr beliebtes Vorgehen für hierarchische Aufklappmenüs heißt »Son of Suckerfish«. (Die Vorgängerversion hieß einfach »Suckerfish«.) Die Details finden Sie unter der Adresse http://www.htmldog.com/articles/suckerfish/. Eine gute (englische) Anleitung für die Erstellung horizontaler Aufklappmenüs mit mehreren Ebenen finden Sie unter der Adresse www.tanfa.co.uk/css/examples/menu/tutorial-h.asp. Auf der gleichen Website befindet sich auch eine Anleitung für die Erstellung vertikaler Menüs mit aufklappbaren Untermenüs: www.tanfa.co.uk/css/examples/menu/tutorial-v.asp. Ein Nachteil der reinen CSS-Lösungen besteht darin, dass die Untermenüs sofort wieder verschwinden, sobald sich der Mauszeiger des Benutzers nicht mehr darüber befindet. Sie können entweder darauf vertrauen, dass alle Ihre Benutzer hervorragende Reflexe haben, oder Sie verwenden einen anderen Ansatz: Benutzen Sie CSS, um die Buttons zu gestalten, und JavaScript, um die Funktionen der Untermenüs zu steuern. Sie finden verschiedene JavaScript-gesteuerte …

Geheime Schleichwege in CSS: Wenn Rahmen aus dem Rahmen fallen

Wenn sich die Buttons in Ihrer Navigationsleiste berühren und Sie jeden Link mit einem Rahmen versehen, werden zwischen den Links die Begrenzungslinien doppelt dargestellt. Die unteren und oberen Rahmenlinien berühren sich. Das können Sie umgehen, indem Sie nur die untere Rahmenseite weglassen. Auf diese Weise wird zwischen den Links jeweils nur eine Begrenzungslinie angezeigt. Durch diese Methode fehlt jetzt aber die Begrenzungslinie unterhalb des letzten Links. Das können Sie jedoch beheben, indem Sie eine Klasse für die richtigen Rahmeneinstellungen definieren und diese dem letzten Link zuweisen. Noch besser ist es, wenn Sie die untere Rahmenseite einfach für das <ul>-Element definieren, das die Navigationsleiste umgibt. Auszug aus dem neuerschienenen CSS Missing Manual von David Sawyer McFarland.