Callbacks in PHP sind eine schöne Sache, z.B. bei der Funktion array_filter(). In jQuery wird extrem viel mit Callbacks gelöst, dort wird z.B. die Callbackfunktion direkt als Parameter definiert.
Anders in PHP. Dort wird nur eine vorher definierte Funktion aufgerufen. Heute stand ich vor dem Problem, ein Array von Einträgen nach dem Datum zu filtern, also z.B. alle Konzerte des Jahres 2009. Oder vergangene Jahre. Leider kann ich der Callbackfunktion aber keinen Parameter übergeben. Alternativ könnte man für jedes Jahr eine eigene Filterfunktion schreiben, was aber sehr unpraktisch ist. Packt man jedoch die Filterfunktion in ein Objekt, kann man diesem die Parameter übergeben und anschließend filtern.
class sortYear
{
var $year = 2009;
function sort ($data) {
$date = $data['date']; //e.g. 2009-04-27 10:00:00
$date = substr($date,0,4); //year of date string, e.g. 2009
return ($date == $this->year) ? true : false;
}
}
[...]
//filter for current year
$sortObj = new sortYear;
$sortObj->year = 2008;
$events2008 = array_filter($events, array($sortObj, 'sort'));
Zu Beachten ist die Notation, wie die Callbackfunktion angegeben wird.