zendフレームワークで別のコントローラのメンバ関数を呼び出すことはできますか?zendフレームワークの他のコントローラのメンバ関数を呼び出していますか?
<?php
class FirstController extends Zend_Controller_Action {
public function indexAction() {
// general action
}
public function memberFunction() {
// a resuable function
}
}
ここでは別のコントローラ
<?php
class SecondController extends Zend_Controller_Action {
public indexAction() {
// here i need to call memberFunction() of FirstController
}
}
だ私は2番目のコントローラからmemberFunctionを()にアクセスする方法を説明してください。
ソリューション
より良いアイデアのAppControllerを定義し、さらにZend_Controller_Actionのを拡張するのAppControllerを拡張するためにすべての通常のコントローラを作ることです。
class AppController extends Zend_Controller_Action {
public function memberFunction() {
// a resuable function
}
}
class FirstController extends AppController {
public function indexAction() {
// call function from any child class
$this->memberFunction();
}
}
今memberFunction
は、単純な継承のルールとしてAppController
を拡張コントローラーから呼び出すことができます。
をちょうどFYI私は共通の機能を必要とするとき、私は間違いなくセットアップ共有クラスまたはモジュールに好みます。しかし、ZF2を使用して1つの状況に遭遇しました。これは、他の2つのコントローラで拡張された親AppControllerを使用すると非常に役立ちます。あなたのソリューションはうまく機能しました。 ZF2では、 "クラスAppControllerはAbstractActionControllerを継承しています"と子コントローラは同じです: "クラスFirstController extends AppController"これを行うためのよりよい方法があると知っていますが、おそらくアプリの構造を再考するべきです。 – gregthegeek