CodeIgniter
Viewの命名則についてメモ。
CodeIgniterのコントローラーでビューを使って表示する場合、呼び出すビューテンプレートのファイル名を指定している。
コントローラーのクラス名とメソッド名を組み合わせて、ビューテンプレートのファイル名を決定する。
そうしておけば、ビューテンプレートのファイル名を見ただけで、どのコントローラークラスのメソッドから呼び出されるものなのかが分かるようになる。
コントローラーのWelcomeクラスにあるadd_memberメソッドから呼び出されるビューテンプレートのファイル名は、
welcome__add_member.php
というファイル名にしてみる。
クラス名とメソッド名をつなぐ「_」(アンダーバー)は2個を使ってつなげる。
1個だけだと、メソッド名の中に「_」が入っていた場合、それがクラス名とメソッド名を区切る「_」なのか、メソッド名の中に含まれている「_」なのか、判別が付かない場合が困る。
メソッド名の中で「_」を使う場合、特別の事情がなければ「_」は1個しか使わないので、「__」(アンダーバーが2個)なら、通常のメソッド名に含まれない記号であることが分かる。
なので、「__」をクラス名とメソッド名を区切る部分の記号として利用すれば良いのではないか?というアイデアである。
しかしながら、PHPのコンストラクターのメソッド名は、アンダーバー「_」を2個つなげた「__」で始まる、「__construct()」というメソッド名を持っている。
これだとちょっと都合が悪いけど、コンストラクターからビューテンプレートファイルを呼び出すことって、多分ないから無視しても構わないだろう。
PHPの命名則において、マジックメソッドの場合、「__」(アンダーバー2個)から始まるメソッド名を付ける、という規則になっている。
(参考)
以下の関数名 __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() および __debugInfo() は、PHP クラスにおける特殊関数の名前です。
また、privateやprotectedを表す場合のメソッド名として、メソッド名の先頭に「__」を付ける場合もある。
これらの場合もクラス名とメソッド名を「__」で区切るルールでも対応できるだろう。
コントローラーのWelcomeクラスに__hoge()というメソッドがあった場合、__hoge()メソッドから呼び出されるビューテンプレートのファイル名は、
welcome____hoge.php
となり、クラス名とメソッド名の区切りを判別可能だ。
すなわち、
「welcome」+「__」+「__hoge」=welcome____hoge
になるので、アンダーバーが4個つながっていた場合、前半の2個がクラス名とメソッド名を区切る記号「__」であり、後半の2個がメソッド名の先頭に付けられた「__」であると解釈できるだろう。
もしも、クラス名とメソッド名を区切る記号がアンダーバー2個「__」だと困る場合があれば、更なる改善を検討してみたい。
PSR(PHP Standard Recommendation):PHPの標準コーディングに関する規約
も参照してみる。
(参考)