Filter機構の実装

PHP4以降でフィルタ機構の実装を行いました。
仕事じゃありません。 趣味で。
http://pluswing.net/download/ResFilter.zip

ファイルは下記3つ
ResFilter/ResFilter.calss.php
ResFilter/NameInvalidFilter.class.php
call.php

call.phpは呼び出しの例。 こうやると使える。 簡単でしょ?

ResFilter.class.phpがコア。
こいつと同じディレクトリ内にあるファイルはすべて
フィルタクラスという前提
で作ってある。
フィルタを追加したい場合、ResFilter.class.phpがあるディレクトリに
ResFilterを継承し、protectedメソッド(@access protected)のメソッド2つを実装する。
・実装ファイルは同じディレクトリに置くこと。
・ファイル名は〜.class.phpとすること。

この2つさえ守れば特に問題はないはずだ。


finter実装はNameInvalidFilterを見てもらえば一目瞭然だろう。

一応実装法を書いておく。
function filter($name, $email, $text);
function getErrorMessage();
の2つ。
filter()はフィルタ処理。
エラーがある場合にfalseを返すようにすれば良い。
getErrorMessage()はエラーがあった場合のエラーメッセージ。
filtering()を見てもらえば分かるが、
エラーがあった場合は該当エラーメッセージを配列として返却する。
呼んだ側で配列が0個であればエラーなし。 あればエラーを出力すれば良い。

これは、その名のとおり名前が空かどうかを調べ、
空の場合エラーとするフィルタだ。

このようにフィルタを作成することで、入力チェックを
簡単に追加できる。
追加しても、他の箇所に影響が出ない。(OCPだね。いわゆる。)

実用に耐えうるとは思うが、
もっと良いやり方があるんだろうと思う。