Monthly Archive for Februar, 2010

Gewinnen bei php hates me

Mit dem Post hier nehme ich an dem Gewinnspiel von PHP hates me teil. Da es um Geschwindigkeit geht, spare ich mir jetzt einen sinnvollen Artikel darüber. Ich will ja das Zend Framework Poster bekommen!

Meine Superclass für Doctrine 2 Models

In einem neuen Projekt möchte ich gern Doctrine 2 verwenden, und habe schonmal etwas vorgearbeitet und mir eine Superclass für die Models erstellt. Doctrine 2 lässt es zu, Models von solch einer Superclass erben zu lassen, in welcher man beispielsweise Felder festlegen kann, die in jedem Model zur Verfügung stehen sollen.

Meine Superclass füllt ein paar Funktionslücken und ist mit folgenden nützlichen Methoden ausgestattet:

  • Definiert die Felder created und updated (jeweils DateTime) und füllt sie entsprechend beim Erstellen und Updaten des Objektes. Wie in Doctrine 1: “act as timestampable”
  • Bietet eine Model::find($id) Methode, welche die gefundene Row oder sonst “null” zurückgibt. Wird Model::find($id, true) aufgerufen, wird ein neues Objekt erstellt und zurückgegeben, wenn $id nicht gefunden wurde. Nützlich, um zum Beispiel die Funktionen zum Erstellen und Bearbeiten von Zeilen nicht doppelt implementieren zu müssen
  • $obj->from($array) erwartet ein array(‘feldname’=>’neuer wert’,…) und füllt die Felder des Objektes entsprechend. Nützlich um viele Werte gleichzeitig zu setzen.
  • $obj->getFieldName() und $obj->setFieldName($value) geben den Wert von field_name zurück, bzw. setzen ihn. Die setter Methode gibt das Objekt zurück, sodass Methodchaining à la $obj->setField1($val1)->setField2($val)… möglich ist. Die setter und getter unterstützen CamelCase. getCamelCaseString würde das Feld camel_case_string zurückgeben.

Anwendung ist ganz einfach; class My_Model extends Model_Base {}. Außerdem muss in der Zend_Registry der EntityManager von Doctrine abgelegt werden, sodass

$registry = Zend_Registry::getInstance();
$em = $registry->entitymanager;

diesen holen kann! Das ginge auch über eine globale Variable oder sowas.

Hier endlich die Klasse zum Kopieren und Spielen:
Continue reading ‘Meine Superclass für Doctrine 2 Models’

So arbeiten also Hacker?

Ich bin eben über heise security auf ein sehr nettes Video gestolpert, in welchem Chris Tarnovsky zeigt, wie er die Chips auf Sat-TV Smartcards geknackt hat: Hack a Sat-TV Smart Card

Und ich dachte immer, zum Hacken reicht eine Shell mit Internetzugang…

Mini Blog in PHP

Auf phpgangsta.de gibt es einen kleinen Wettbewerb, wer die kleinste Blogsoftware schreibt.

Das klingt nach einer interessanten Aufgabe, derer ich mich eben mal gewidmet habe.

Größe derzeit: 165 Byte (unix: 148 Byte) grauenvoller Code!

Auseinanderwurschteln könnt ihr das selbst, in schön gibts nur die endgültige Version.

ohne unix befehle (165 Byte)

<?extract($_GET);$i='><input';$x=join('',file(c));if($p==p)echo"<form$i name=t$i name=c$i type=submit>";if($t)fwrite(fopen(c,w),"<hr>$t(".date(c).")<p>$c$x");echo$x;

mit unix befehlen (148 Byte)

<?extract($_GET);$d=date(c);$i='><input';$x=`cat c`;if($p==p)echo"<form$i name=t$i name=c$i type=submit>";if($t)`echo '<hr>$t($d)<p>$c$x'>c`;echo$x;

Zend Framework Support für Netbeans 6.9

Zwar schon einen Monat her, aber oh Freude!

Testen…