最近のPHPにはトレイト(Trait)という機能がある。初めて知った。
PHP: トレイト - Manual
要は、多重継承出来ない PHPで、実装をうまく再利用する為の機能らしい。私はC++で多重継承の経験があるけれど、確かにあれはとっちらかってワケが分からなくなるので、単一継承の方が良いと思う(Javaが単一継承を選んだ時もそう思った)が、実装を再利用するにはちょっと不便なのも事実。
PHPのトレイトでは、メソッドだけで無くプロパティも設定出来たり、抽象メソッドも設定出来たりする。殆ど実体化(instantiate)出来ないだけのクラスって感じだな。
クラス内でトレイトを指定すると、現クラスの実装→トレイトの実装→親クラスの実装、という順番で優先順位が設定され実装がオーバーライドされる。
で、例えばLaravelのAuthControllerはAuthenticatesAndRegistersUsersトレイトを使っている。このAuthenticatesAndRegistersUsersトレイトは、AuthenticatesUsersトレイトとRegistersUsersトレイトを使っている。このAuthenticatesUsersトレイトが、例えばgetLogin, postLogin, getLogout等のメソッドの実装を持っている。
getLoginの実装ではauth.authenticateというViewがあればそれを、無ければauth.loginというViewを返す。このauth.loginというViewの名前は、自動的にプロジェクト内の/resources/views/auth/login.blade.phpというパスに変換され、該当するファイルを表示する。
HTML Formの表示には、Laravel5ではオプションになったHTMLヘルパを使う事が出来る。
Laravel5で新規データの作成
HTMLタグで書く事も出来るが、ヘルパを使うメリットとしては、HTMLタグにPHPコードを埋め込む際にタイプ(文字)数が減るとか、そういうメリットがあるというところか。
0 件のコメント:
コメントを投稿