A propos Tags – Symfony 1.2

Ich schlage mich im Moment mit Tags & Behaviors herum. Eigentlich soll das BETA Plugin sfPropelActAsTaggableBehaviorPlugin auch unter symfony 1.2 laufen:

symfony propel-build-all
>> propel    generating form classes
Cannot fetch TableMap for undefined table: sf_tag.  Make sure you have the static MapBuilder registration code after your peer stub class definition.

Das Problem ist in den Foren bekannt.

– Des Rätsels Lösung nach 3 Std. Arbeit: Ein Klassenname aus meinem Projekt glich einer Klassenbezeichnung aus dem Plugin.

Doctrine – Accessoren & Mutatoren

Also erstens, damit man die Doku versteht: Mutatoren sind natürlich “Setter” (setFirstname(string name)),  Accessoren “Getter” (getFirstname()). Doctrine ermöglicht es auf vielfältige Weise, Attribute eines OR-Objekts programmatisch zu erfragen bzw. zu verändern. Da jede Instanz von Doctrine_Record letztlich die abstrakte Elternklasse Doctrine_Access implementiert, wird der Zugriff und alle Änderungen durch die (magischen) PHP-Methoden __get(), __set() und __call() koordiniert. Zusätzlich bietet Doctrine eine Konfiguration, die es ermöglicht, jede Änderung an einem Objekt einem optionalen, zentralen Methodenaufruf zuzuleiten, der dann als eine Art Interzeptor fungiert.

Continue reading “Doctrine – Accessoren & Mutatoren”

Javascript Code Quality Checker

JSLint ist ein Tool zur statischen Codeanalyse wie bspw. Checkstyle, den einem die Javaprofs gerne mal im ersten Semester OOP aufzwingen. JSLint prüft, wie der Name schon sagt – Javascript-Code. Aber Vorsicht:

JSLint will hurt your feelings!

Kleine Randnotiz: Der hier muss natürlich wieder rumstänkern, aber das gehört wohl zu jedem guten Nerd-Blogger, der etwas auf sich hält ;).

Diese Prüfwerkzeuge, die es mittlerweile für so gut wie jede neuere (nicht älter als <>20 Jahre) Programmiersprache gibt, stellen natürlich nur ein Mittel von vielen zur Qualitätssicherung in der Softwareentwicklung, außerdem ist blindes Vertrauen natürlich Fehl am Platze.

Simple Tags

Eines meiner persönlichen Lieblingsplugins – wer die Tagsammlung meines persönlichen Blogs, kleinski.de gesehen hat, weiß auch warum – ist Simple Tags von Amaury Balmer.

Denn dank des Plugins ist die Verschlagwortung von Artikeln binnen kürzester Zeit erledigt und, via Zugriff auf die Yahoo terms extractions API und den Service Tag The Net, werden bekannte Personen, Namen und andere Ausdrücke, die man vielleicht selber gerade nicht auf dem Schirm hat, aus dem entsprechenden Pool gefischt und jeder Artikel ist mit wenigen Mausklicks getagged.

Tag it.

CouchDB E-Book

Eine dieser neumodischen dokumentenbasierenten Datenbanken. Ich bin über eine ausführliche Dokumentation gestolpert, nämlich gibt es das ziemlich brandneue Buch “CouchDB – The Definitive Guide” (J. Anderson, Noah Slater, Jan Lehnard, CouchDB – The Definitive Guide, ISBN 978-0-596-15589-6) von O’Reilly als E-Book zum im-Internet-angucken und umsonst. Unter dieser Adresse. Schon die ersten Kapitel machen Lust, in die Thematik zu schnuppern. Schon immer mal wollte ich via Dojo JsonRESTStore einen Webservice so richtig ansaugen und zwar ohne das lästige PHP dazwischen. Mit CouchDB scheint das auf einfachste Weise möglich zu sein. Continue reading “CouchDB E-Book”

Behave, baby!

Doctrine macht es dem Entwickler leicht, seine Object-Models mit Businesslogic anzureichern. Entsprechende Methoden an der Doctrine_Record-  – oder allgemeiner – an einer entsprechenden Doctrine_Table-Kindklasse zu verdrahten ist ein Kinderspiel. Irgendwann trifft man dann auf einen Anwendungsfall, der eine entsprechende Zusatzfunktionalität erfordert, ohne dass das “Tätigkeitsfeld” dieser Funktionalität auf nur eine Gruppe von Entitäten zu begrenzen wäre. Anstatt nun die immer gleichen Methoden für alle seine Object-Models, die die neue Funktionalität benötigen, zu implementieren und damit ziemlich viel Code zu produzieren, möchte man lieber das ORM-Framework selbst erweitern. Auch hierfür bietet Doctrine die entsprechenden Schnittstellen: Einen Eventdispatcher zusammen mit ziemlich viele Stellen im Code, denen man “zuhören” kann und das Konzept der Behaviours (dt. etwa Verhaltensmuster): Oh behave!

Continue reading “Behave, baby!”

Den Scope betrügen – wenn der Berg mal zum Propheten kommt

Javascript und der Scope (dt. “Sichtbarkeitsbereich“) einer Variablen ist so eine Sache.  Durch eine klitzekleine Fehlkonzeption – wenn man es denn so nennen kann – in ECMAScript (die Sache mit dem Schlüsselwort “this” und dessen änderbarer Referenz in “self”) fällt es hin und wieder schwer zu erkennen, in welchem Scope man sich gerade “herumtreibt”, also in welchem Kontext bspw. eine Funktion oder Instanzmethode initialisiert oder aufgerufen wird. Wobei eine Methode, die in Kontext a deklariert wird, noch lange nicht in Kontext a ausgeführt werden muss.

Continue reading “Den Scope betrügen – wenn der Berg mal zum Propheten kommt”