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!
Tiny URLs mit PHP und der tinyurl API
für den Fall dass ich nicht der einzige bin, der das bis vorhin nicht wusste:
tinyurl.com hat auch eine API.
Die ist zwar unglaublich simpel, aber das ist doch auch mal schön.
$tinyURL = file_get_contents( 'http://tinyurl.com/api-create.php?url='.$tooLongURL );
und vice versa (hackish):
function reverse_tinyurl($url){
// Resolves a TinyURL.com encoded url to it's source.
$url = explode('.com/', $url);
$url = 'http://preview.tinyurl.com/'.$url[1];
$preview = file_get_contents($url);
preg_match('/redirecturl" href="(.*)">/', $preview, $matches);
return $matches[1];
}
PHP debug Ausgaben in Ajax Responses mit FirePHP
eine weitere Supererweiterung für Firebug ist meiner Meinung nach FirePHP.

Das Tool ermöglicht PHP (debug)Ausgaben direkt an die Firebug Konsole zu schicken: Continue reading “PHP debug Ausgaben in Ajax Responses mit FirePHP”
Symfony flying with Lighttpd on Mac OS X 10.6
This guide aims to Mac OS X 10.6 users who intend to run their Symfony 1.2 projects on Lighttpd with PHP 5.3 and MySQL5. Steps described in this article refer to a development machine setup and do not consider any security related configurations necessary for a production setup.
Why?
Why would I want to use Symfony with Lighttpd (Lighty) instead of Apache?
- It is light – as the name tells already.
Continue reading “Symfony flying with Lighttpd on Mac OS X 10.6”
TinyMCE + symfony AdminGenerator + sfAssetsLibraryPlugin
Die 3 in symfony kombinieren? (K)Ein Problem:
Plugin installieren
php symfony plugin:install sfFormExtraPlugin
TinyMCE runterladen
https://www.tiny.cloud//
(da sowieso jquery im Einsatz ist, dort die jquery variante)
– TinyMCE kopieren ins Projekt: /web/js/tiny_mce/
– js einbinden in der view.yml
javascripts: [ tiny_mce/tiny_mce.js ]
– in der generator.yml TinyMCE anmelden
edit:
fields:
text: { type: textarea_tag, params: '<?php echo sfConfig::get('app_tinymce_options'); ?>' }
Interessant dabei ist, daß die Angabe in der generator.yml reicht, zumindest in Verbindung mit dem AdminGenerator.
Continue reading “TinyMCE + symfony AdminGenerator + sfAssetsLibraryPlugin”
Silverstripe Complex Fields
Silverstripe ist ja ein Superding. Problematisch nur hin und wieder, dass die Dokumentation nicht allzuviel hergibt und das Ding intern teils etwas eigenwillig geschrieben ist. So ist der ORMapper eher für Routineaufgaben geeignet, komplexere Anforderungen erfüllt man besser “zu Fuß”.
Und die DBFields … tjaja. Nirgends (?) steht geschrieben, wie man denn die magisch überladenen Getter und Setter dazu bringt, hier den primitiven Typ, dort die Objektrepräsentation zu liefern. Gesetzt den Fall, man hat ein Feld “Price” vom Typ “Currency”:
sfAMFPlugin & Propel Custom Properties
Das SfAmfPlugin ist ein Symfony-Plugin, welches auf SabreAMF aufsetzt, einer PHP-Bibliothek, die – yessir! – zur Kommunikation mit einem Flash/Flex Remote Client via AMF-Protokoll konzipiert wurde.
Nun bietet SabreAMF ab Werk “nur” Serialisierungen für primitive Typen sowie Bytestreams (Flash-Pendant “ByteArray”) und PHP-Array (“ArrayCollection”) an. Natürlich kann man auch Objekte per Class-Mapping auf ein Äquivalent im Flash-Player abbilden. Continue reading “sfAMFPlugin & Propel Custom Properties”
Symfony, Propel und SQL Aggregate Functions
Da ich jetzt fast zwei Stunden gebraucht habe um einen GROUP BY und COUNT query in Symfony hinzukriegen, hier mal die Erklärung dazu.
Bei Google hab ich auch nichts sonderlich hilfreiches gefunden, bis auf einen Beitrag:
hier … und da die letzte Antwort.
Will man also einen Query wie folgt mit Propel bauen:
SELECT referer.ID, referer.IP, referer.CREATED_AT, count(*) AS cnt FROM `referer` WHERE referer.CREATED_AT >'2009-07-22 00:00:00' GROUP BY referer.URL ORDER BY referer.CREATED_AT ASC LIMIT 25
macht man so:
Continue reading “Symfony, Propel und SQL Aggregate Functions”
Web FTP / web based Filemanager tools im überblick
Eine Übersicht über 6 webFTP / Filemanager Tools verspricht dieser Artikel hier:
http://www.dreamcss.com/2009/07/file-managers-based-on-jquery-ajax-php.html
if you looking for Free and powerful File Managers
Based on jQuery , Ajax and php ready to use in your web projects and easy to customize , take a look at this list with Free and powerful File Managers using jQuery/Ajax/php
Ich finde fand Relay (demo) sieht sah am besten aus.
v0.1 beta klang dann schon nicht mehr ganz so hervorragend…
und das upload script heisst auch nicht ohne Grund “upload.pl” Continue reading “Web FTP / web based Filemanager tools im überblick”
Symfony Day Cologne – Ein paar Slides
Für den, der gerade nicht in Köln war, habe ich hier höchstselbst mühsamst die dazugehörigen Slides zusammengesucht und -redaktioniert. Jaja… :
- Jonathan Wage on “Symfony 1.3 & Doctrine 1.2“
- Bernhard Schussek on “Best Practices with Lime 2“
- Nicolas Perriault, “30 symfony best practices“
- Xavier Lacot, “Symfony vs. integrating products” (pdf)
Lesenswert sind definitiv die ersten beiden, als ein Ausblick auf die nächste Doctrine-Version in Verbindung mit Symfony 1.3 sowie ein kurzer Blick auf die Features von Lime 2, auch gespickt mit einigen Best Practices was Unit- und Functional Testing angeht.