数値系のValidateの違い

数字系のValidateには、以下があります

・Zend_Validate_Digits
・Zend_Validate_Int
・Zend_Validate_Float
・Zend_Validate_LessThan
・Zend_Validate_GreaterThan
・Zend_Validate_Between

この中で、下の3つはクラス名からのイメージ通りなので割愛します。
Int、Floatもクラス名からイメージ通りなのですが、Digitsも含めて、
どういう風に判定結果が変わるのかを考えると、???となりました。私は。

調べてみたところ、こんな感じです。
・Digitsは、数字のみで構成されていること
・Intは、整数であること
・Floatは、整数または小数点を含む数値であること

これだけでは、まんまだねで終わるので、例で説明します

【例1 : 09022225555】
 Digits⇒○、Int⇒×、Float⇒×

【例2 : 0.01】
 Digits⇒×、Int⇒×、Float⇒○

【例3 : -1】
 Digits⇒×、Int⇒○、Float⇒○

【例4 : 2】
 Digits⇒○、Int⇒○、Float⇒○

Zend_Validate_NotEmptyの注意点

いまさらなんですが、気づいたのでメモしておきます。

Zend_Validate_NotEmptyですが、クラスの中ではphpのemptyメソッドを利用して
判定が行われているので、判定結果もemptyメソッドの処理結果と同様になります。

以前emptyメソッドではまったところなんですが、’0’は空と判定されるのです。
empty(‘0’)は true が判定結果として返されます。

入力チェックで、0 を許容したいところには、Zend_Validate_NotEmptyは使えません。

0 の1文字を許容するところは、数値の入力欄だと思うので、
Zend_Validate_Digitsを利用するといいです。
これは、クラス内で $value === ” という判定を行ってくれますので、
正確に空を判定することができます。