Callback
Zend_Validate_Callback erlaubt es einen Callback anzugeben der
verwendet wird um einen angegebenen Wert zu prüfen.
Unterstützte Optionen für Zend_Validate_Callback
Die folgenden Optionen werden für Zend_Validate_Callback
unterstützt:
callback: Setzt den Callback welcher
für die Prüfung aufgerufen wird.
options: Setzt zusätzliche Optionen
welche an den Callback übergeben werden.
Grundsätzliche Verwendung
Der einfachste Anwendungsfall besteht darin eine einzelne Funktion zu haben und diese
als Callback zu verwenden. Angenommen wir haben die folgende Funktion.
Um diese in Zend_Validate_Callback zu verwenden muss man Sie
nur auf folgende Weise aufrufen:
isValid($input)) {
// Input scheint gültig zu sein
} else {
// Input ist ungültig
}
]]>
Verwendung mit Closures
PHP 5.3 führt Closures ein,
welche grundsätzlich selbst-enthaltene oder anonyme Funktionen
sind. PHP nimmt an das Closures eine andere Form eines Callbacks
sind, und können daher als solche mit Zend_Validate_Callback
verwendet werden. Als Beispiel:
isValid($input)) {
// Input scheint gültig zu sein
} else {
// Input ist ungültig
}
]]>
Verwendung mit klassenbasierten Callbacks
Natürlich ist es auch möglich eine Klassenmethode als Callback zu verwenden. Angenommen
wir haben die folgende Klassenmethode:
Die Definition des Callbacks ist in diesem Fall fast die gleiche. Man muss nur eine
Instanz der Klasse vor der Methode erstellen und ein Array das den Callback beschreibt:
isValid($input)) {
// Input scheint gültig zu sein
} else {
// Input ist ungültig
}
]]>
Man kann auch eine statische Methode als Callback definieren. Angenommen wir haben die
folgende Klassendefinition dann ist die Verwendung des Prüfers wie folgt:
isValid($input)) {
// Input scheint gültig zu sein
} else {
// Input ist ungültig
}
]]>
Letztendlich kann man, wenn man PHP 5.3 verwendet, die magische
Methode __invoke() in der eigenen Klasse definieren. Wenn man
das tut dann funktioniert die Angabe einer Instanz der Klasse genauso:
isValid($input)) {
// Input scheint gültig zu sein
} else {
// Input ist ungültig
}
]]>
Optionen hinzufügen
Zend_Validate_Callback erlaubt auch die Verwendung von Optionen
welche als zusätzliche Argumente dem Callback übergeben werden.
Nehmen wir die folgende Klassen und Methoden Definition an:
Es gibt zwei Wege um den Prüfer über zusätzliche Optionen zu informieren: Diese im
Constructor übergeben, oder Sie mit der Methode setOptions()
übergeben.
Um Sie im Contructor zu übergeben, muss ein Array übergeben werden das die zwei
Schlüssel "callback" und "options" enthält:
array('MyClass', 'myMethod'),
'options' => $option,
));
if ($valid->isValid($input)) {
// Input scheint gültig zu sein
} else {
// Input ist ungültig
}
]]>
Andererseits können Sie dem Prüfer auch nach der Instanzierung übergeben werden:
setOptions($option);
if ($valid->isValid($input)) {
// Input scheint gültig zu sein
} else {
// Input ist ungültig
}
]]>
Wenn zusätzliche Werte an isValid() übergeben werden, dann
werden diese Werte unmittelbar nach $value hinzugefügt.
setOptions($option);
if ($valid->isValid($input, $additional)) {
// Input scheint gültig zu sein
} else {
// Input ist ungültig
}
]]>
Wenn der Aufruf zu einem Callback durchgeführt wird, dann wird der Wert der zu
überprüfen ist als erstes Argument an den Callback übergeben gefolgt von allen anderen
Werten die an isValid() übergeben wurden; alle anderen Optionen
folgen Ihm. Die Anzahl und der Typ der Optionen welche verwendet werden ist nicht
limitiert.