そのため、主に投稿されたフォームを検証するために Valitron Library を使用しており、いくつかの問題に遭遇しました。
コンストラクターは検証するデータを受け入れるため、Pimple またはその他のコンテナーとの依存関係としてライブラリーを注入すると、問題が発生します。また、基本的にライブラリを使用するたびにライブラリをインスタンス化する必要があるため、複数のものを検証する場合にも問題が発生します。
これを回避する方法はありますか?
最終的には、ライブラリをサービスとして定義し、次のように Pimple で注入できるようにしたいと考えています。
$container['Valitron'] = function(){
return new \Valitron\Validator();
};
何かを検証する必要があるコントローラー/クラスは、コンストラクターで次のように初期化します。
public function __construct($valitron)
{
$this->valitron = $valitron;
}
何かを検証する必要があるときはいつでも、次のように言えます。
// First use
$this->valitron->setData($_POST);
$this->valitron->rule('required', 'name')->message('Im required')->label('Name');
$this->valitron->validate();
// Second use
$this->valitron->setData($_GET);
$this->valitron->rule('required', 'test')->message('Im also required')->label('Test');
$this->valitron->validate();
しかし、setData関数、または使用の間にライブラリをリセットする方法はないようです。
質問: Valitron を Pimple で使用し、一度に複数のことを検証するために再利用するにはどうすればよいですか?
注意: 注射する必要があります。また、使用するたびに初期化する必要もありません。ライブラリを拡張したり、適切に機能させるためにハッキングしたりしなければならないなどとは言わないでください。