入力フォームなんだから当然validationとかもしなければいけないわけで、いろいろやるクラスを別に作って結果を定数で返すようにした。
こういうときCだったらenumを使うのが多分普通なのですが、PHP5にはenumはないんですな。
enumよりももっとスマートな方法もあるのかもしれないけど、パッとは思いつかない。
それにJavaでもC#でも、switch文は頑なに拒否するPythonですらenumは標準モジュールで用意されてるんですから、やはりenumはいいものなのでしょう。
ググってみたら「enum実装しました!」とかいう人も当然いるわけですが、しかしenum程度でわざわざ外部ライブラリとか大げさな気もする。
で、自分なりの方法を模索するわけです。
とりあえずぱっと思いつくのはこれですな。
class RetCode {
const VALID_POST = 0;
const INVALID_POST = 1;
const SHORTAGE_POST = 2;
const INVALID_FILE_UPLOADED = 3;
・
・
・
}
自分で連番ふって定数定義…はい、こんなもんenumじゃありません。
自動で重複しない数値を振ってくれなければenumの替わりとは絶対認められないに決まってます。
で、PHPのドキュメント5分ほど眺めてこうすることにしました。
class RetCode {
private static $ret = [
"VALID_POST",
"INVALID_POST",
"SHORTAGE_POST",
"INVALID_FILE_UPLOADED",
・
・
・
];
public static function get_retcode() {
return array_flip(self::$ret);
}
}
keyなしで配列定義してarray_flip()してやれば、重複しない値をもつ配列になりますね。
定義されてないkeyを使おうとすればNotice Errorでるから、typo防止にもなるっちゃなりますし。
Cのenumとそれほど手間も変わらないんで、お手軽につかう分にはいいんじゃないかと思います。
0 件のコメント:
コメントを投稿