現在、フォームの検証に苦労しています。私は以下のクラスを使用しています。これは流暢なインターフェイスになることを目的としています。
class Validator implements ValidatorInterface {
protected $_count_validators = 0;
protected $_validators;
protected $errorMsg;
public function __construct($errorMsg = '')
{
$this->errorMsg = $errorMsg;
}
public function addValidator(ValidatorInterface $validator)
{
$this->_count_validators++;
$this->_validators[] = $validator;
return $this;
}
public function validate($value)
{
foreach($this->_validators as $validator) {
if ($validator->validate($value) === false) {
return false;
}
}
return true;
}
public function getError()
{
return $this->errorMsg;
}
}
実際には 75% 動作します。次のようにバリデーターを追加できます。
$postalcodeValidator = new \Framework\Formular\Validator\Validator();
$validatePostalcode= $postalcodeValidator->addValidator(new \Framework\Formular\Validator\NotEmpty)
->addValidator(new \Framework\Formular\IsNumeric);
$cityValidator = new \Framework\Formular\Validator\Validator();
$validateCity = $lastnameValidator->addValidator(new \Framework\Formular\Validator\NotEmpty);
今、私はただ書くことができます:
$result = $postalcodeValidator->validate('00000');
- or -
$result = $cityValidator->validate('London');
そして、ブール値を取得します。私の問題は、いくつかのエラーを簡単に設定できるようにする必要があることです。上記の例では、クラスに getErrors() 関数を追加しただけの場合、クラスの新しいインスタンス化ごとにエラーを取得する必要がありました。すべてのエラーを取得する関数を作成したいと考えています。
その解決策を教えていただけますか?
前もって感謝します、
デンラウ