Calling member function of other controller in zend framework?(在zend框架中调用其他控制器的成员函数?)
问题描述
是否可以在zend框架中调用另一个控制器的成员函数,如果是,那么如何?
Is it possible to call the member function of another controller in zend framework, if yes then how?
<?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
}
}
请解释我如何从第二个控制器访问 memberFunction().
Please explain how i can access memberFunction() from second controller.
更好的想法是定义一个 AppController 并使所有常用控制器扩展 AppController,从而进一步扩展 Zend_Controller_Action.
Better idea is to define a AppController and make all usual controllers to extend AppController which further extends 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();
}
}
现在 memberFunction 可以从扩展 AppController 的控制器调用,作为简单继承的规则.
Now memberFunction can be invoked from controllers extending AppController as a rule of simple inheritance.
推荐答案
控制器并非旨在以这种方式使用.如果您想在当前控制器之后执行另一个控制器的动作,请使用_forward()方法:
Controllers aren't designed to be used in that way. If you want to execute an action of the other controller after your current controller, use the _forward() method:
// Invokes SecondController::otherActionAction() after the current action has been finished.
$this->_forward('other-action', 'second');
请注意,这只适用于操作方法(memberAction"),不适用于任意成员函数!
Note that this only works for action methods ("memberAction"), not arbitrary member functions!
如果 SecondController::memberFunction() 做了一些跨多个控制器需要的事情,把代码放在一个动作助手或库类中,这样两个控制器就可以访问共享的功能而不必依赖互相依赖.
If SecondController::memberFunction() does something that is needed across multiple controllers, put that code in a action helper or library class, so that both controllers can access the shared functionality without having to depend on each other.
这篇关于在zend框架中调用其他控制器的成员函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在zend框架中调用其他控制器的成员函数?
基础教程推荐
- YouTube API v3 点赞视频,但计数器不增加 2022-01-01
- Cron Jobs 调用带有变量的 PHP 脚本 2022-01-01
- PHP 类:全局变量作为类中的属性 2021-01-01
- 如何在 Laravel 5.3 注册中添加动态下拉列表列? 2021-01-01
- 如何在 Laravel 中使用 React Router? 2022-01-01
- 在PHP中根据W3C规范Unicode 2022-01-01
- 如何替换eregi() 2022-01-01
- 有什么方法可以用编码 UTF-8 而不是 Unicode 返回 PHP`json_encode`? 2021-01-01
- 学说 dbal querybuilder 作为准备好的语句 2022-01-01
- PHP PDO MySQL 查询 LIKE ->多个关键词 2021-01-01
