入力フォームなんだから当然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 件のコメント:
コメントを投稿