L'appel de la fonction membre de l'autre contrôleur dans le zend framework?

Est-il possible d'appeler la fonction membre d'un autre contrôleur dans le zend framework, si oui, alors comment?

<?php
class FirstController extends Zend_Controller_Action {
    public function indexAction() {
         //general action 
    }   

    public function memberFunction() {
         //a resuable function
    }
}

Voici un autre contrôleur de

<?php
class SecondController extends Zend_Controller_Action {
    public indexAction() {
         //here i need to call memberFunction() of FirstController
    }
}

Veuillez expliquer comment je peux accéder à memberFunction() à partir de la deuxième contrôleur.

Solution

Meilleure idée est de définir un AppController et de faire tout ce que d'habitude contrôleurs de prolonger AppController qui étend encore Zend_Controller_Action.

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();
    } 
}

Maintenant memberFunction peut être appelé à partir des contrôleurs de l'extension de AppController comme une règle de l'héritage simple.

  • Juste un avis, je préfère largement à la configuration partagée classes ou modules quand j'ai besoin d'une fonctionnalité commune. Cependant, j'ai couru dans une situation à l'aide de zend framework 2, où il serait très utile d'utiliser un parent AppController qui s'est étendu sur un couple d'autres contrôleurs. Votre solution a fonctionné à merveille. Dans ZF2 vous de l'installation:"class AppController s'étend AbstractActionController" et le contrôleur enfant serait la même: "class FirstController extends AppController" je sais qu'il y a de meilleures façons de le faire et je devrais probablement repenser certains app structure, mais il fonctionne.
InformationsquelleAutor Ish | 2009-05-20