CakePHPで独自に作ったコントローラーを継承する方法を調べました。
自分はJavaをよく使っていたというのは変かもしれませんがコントローラーの継承というのはそれほど違和感はないのですがCakePHPなどのフレームワークでコントローラーを継承するのはご法度なのですかね。その辺りはあんまり詳しくないので、あくまで独自のコントローラーを継承する方法です。
継承したいコントローラーの作成
app/Controller/BaseController.phpとして作成しました。
[php]
<?php
class BaseController extends AppController {
function namae() {
return "私はBaseControllerです。";
}
}
[/php]
動作確認ようにnamaeという文字列を返すメソッドを用意しました。
BaseControllerを継承した
なんでもいいのですが、HelloControllerというコントローラーがあるとしてこのコントローラーでBaseControllerを継承します。
その時に重要なのは継承したいコントローラーを予めインポートしておくことです。
またindexメソッドでparent::namaeとして親クラスのメソッドを呼び出してdebugメソッドを使って画面に表示しています。
[php]
App::uses('BaseController', 'Controller');
class HelloController extends BaseController {
public function index() {
debug(parent::namae());
}
}
[/php]
実行してみる
ブラウザでアクセスすると、
のように黄色い部分に親クラスで定義したnamaeメソッドの内容が表示されていることが確認できます。
結びに
今回はコントローラーでしたが、同じ要領でビューなど各種クラスを利用できそうです。
はCakePHPのドキュメントを読むと利用例が書いてありますので参照すると便利かと思います。
App クラス — CakePHP Cookbook 2.x ドキュメント