Jun
30
2010

Zend_Validate_Float und seine Tücken

Hoi,
im heutigen Schwank aus dem Alltag geht es um die Komponente Zend_Validate hier im speziellen um die Klasse Zend_Validate_Float.
Mit dieser hatte ich heute ein kleines WTF Erlebnis und zwar wollte ich über den Validator diverse Eingaben auf gültige float Werte überprüfen.

Hier ein kleines Beispiel um mein Vorhaben ein bisschen zu verdeutlichen:

    $floatValidator = new Zend_Validate_Float();

    $floatValue = 56.55623234;

    if (!$floatValidator->isValid($floatValue))
    {
    	// not valid
       return false;
    }

    // valid do whatever

Augenscheinlich ist der Wert von $floatValue (56.55623234) ein float Wert. Leider sah das der Validator heute ganz anders und schickte mich immer mit den Worten ” ’56.55623234′ does not appear to be a float” zurück nach Hause. Wahrscheinlich aufgrund der Hitze schlug ich meinen ersten Gedanken mal in die Doku zu gucken aus und sah, suchte bei Google und fand nichts. Bis mir der Geistesblitz kam, dass es wohl an einer locale Einstellung liegen musste, da im Deutschen float Werte eigentlich Komma nicht Punkt getrennt angegeben werden. Durch einen kurzen Blick in die Doku ließ sich feststellen, dass man dem Konstruktor von Zend_Validate_Float eine Instanz von Zend_Locale mitgeben kann.

    $floatValidator = new Zend_Validate_Float(new Zend_Locale('en_US'));

Danach arbeitete der Validator so wie er sollte und alle waren glücklich.
Was lernen wir daraus?
1. viel trinken an so einem heißen Tag
2. RTFM

Kommentar schreiben