PHP

CakePHPで独自のコントローラーを継承する方法

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]

実行してみる

ブラウザでアクセスすると、
debug1
のように黄色い部分に親クラスで定義したnamaeメソッドの内容が表示されていることが確認できます。

結びに

今回はコントローラーでしたが、同じ要領でビューなど各種クラスを利用できそうです。
はCakePHPのドキュメントを読むと利用例が書いてありますので参照すると便利かと思います。
App クラス — CakePHP Cookbook 2.x ドキュメント

-PHP

© 2024 ビー鉄のブログ Powered by AFFINGER5