CodeIgniter
Viewの命名則についてメモ。

コントローラーのクラスとメソッドを利用

CodeIgniterのコントローラーでビューを使って表示する場合、呼び出すビューテンプレートのファイル名を指定している。
コントローラーのクラス名とメソッド名を組み合わせて、ビューテンプレートのファイル名を決定する。
そうしておけば、ビューテンプレートのファイル名を見ただけで、どのコントローラークラスのメソッドから呼び出されるものなのかが分かるようになる。

(例)

コントローラーのWelcomeクラスにあるadd_memberメソッドから呼び出されるビューテンプレートのファイル名は、

  • クラス名:Welcome
  • メソッド名:add_member
    を使う。
welcome__add_member.php

というファイル名にしてみる。

クラス名とメソッド名をつなぐ「_」(アンダーバー)は2個を使ってつなげる。
1個だけだと、メソッド名の中に「_」が入っていた場合、それがクラス名とメソッド名を区切る「_」なのか、メソッド名の中に含まれている「_」なのか、判別が付かない場合が困る。
メソッド名の中で「_」を使う場合、特別の事情がなければ「_」は1個しか使わないので、「__」(アンダーバーが2個)なら、通常のメソッド名に含まれない記号であることが分かる。
なので、「__」をクラス名とメソッド名を区切る部分の記号として利用すれば良いのではないか?というアイデアである。

「__」(アンダーバーが2個)の問題点

しかしながら、PHPのコンストラクターのメソッド名は、アンダーバー「_」を2個つなげた「__」で始まる、「__construct()」というメソッド名を持っている。
これだとちょっと都合が悪いけど、コンストラクターからビューテンプレートファイルを呼び出すことって、多分ないから無視しても構わないだろう。

PHPのマジックメソッド

PHPの命名則において、マジックメソッドの場合、「__」(アンダーバー2個)から始まるメソッド名を付ける、という規則になっている。

(参考)

  • PHP: マジックメソッド - Manual https://www.php.net/manual/ja/language.oop5.magic.php

    以下の関数名 __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

PSR(PHP Standard Recommendation):PHPの標準コーディングに関する規約
も参照してみる。

(参考)


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-17 (土) 00:31:50 (34d)