zend framework版本:1.7.1
这是一个小技巧,不过很实用。有时许多controller要共用同一个功能,比如后台部分都有一个登录验证。这时如果不想在每个controller中都编辑这个功能,就可以使用这种方法。
首先我们了解一下类的构造函数的执行顺序,参看这里:
http://hi.baidu.com/billdkj/blog/item/65028b03721272eb09fa931c.html
下面介绍一下我的代码结构;
class Action extends Zend_Controller_Action {
}
class IndexController extends Action{
}
class BlogController extends Action{
}
刚开始我想使用构造函数,如下:
class Action extends Zend_Controller_Action {
public function __construct(){
echo 'test';
}
}
但后来发生错误,最后发现原因是没有调用Zend_Controller_Action中的构造函数。
细读Zend_Controller_Action的源码发现123行构造函数 调用了函数 $this->init();
因此我想在Action重构这个函数,这样就可以每次调用init()函数。
最后是:
class Action extends Zend_Controller_Action {
public function init(){
echo 'test';
}
}
好了,每个controller都会执行这个函数。
这个技巧还是很实用的!
冷锋:http://hi.baidu.com/billdkj/blog/item/dee1b49571dc7f4cd0135e1d.html
这是一个小技巧,不过很实用。有时许多controller要共用同一个功能,比如后台部分都有一个登录验证。这时如果不想在每个controller中都编辑这个功能,就可以使用这种方法。
首先我们了解一下类的构造函数的执行顺序,参看这里:
http://hi.baidu.com/billdkj/blog/item/65028b03721272eb09fa931c.html
下面介绍一下我的代码结构;
class Action extends Zend_Controller_Action {
}
class IndexController extends Action{
}
class BlogController extends Action{
}
刚开始我想使用构造函数,如下:
class Action extends Zend_Controller_Action {
public function __construct(){
echo 'test';
}
}
但后来发生错误,最后发现原因是没有调用Zend_Controller_Action中的构造函数。
细读Zend_Controller_Action的源码发现123行构造函数 调用了函数 $this->init();
因此我想在Action重构这个函数,这样就可以每次调用init()函数。
最后是:
class Action extends Zend_Controller_Action {
public function init(){
echo 'test';
}
}
好了,每个controller都会执行这个函数。
这个技巧还是很实用的!
冷锋:http://hi.baidu.com/billdkj/blog/item/dee1b49571dc7f4cd0135e1d.html