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