+ -
当前位置:首页 → 问答吧 → 关于tp继承类的全局性问题,谢谢

关于tp继承类的全局性问题,谢谢

时间:2011-05-03

来源:互联网

我在我的MYAPP项目的Action目录下创建一个Global.class.php文件,作为自定义的全局类,剩下的所有类(比如:Index等)都继承这个Global类。
代码如下:
<?php
class GlobalAction extends Action{
    public function _initialize(){
       header("Content-Type:text/html; charset=utf-8");
echo "<font color=red> global </font>";
     }   
}
?>

<?php
class IndexAction extends GlobalAction{

    public function index(){
        $this->display();
    }
}
?>

结果在每个模块的首页上显示红色的  global
到此为止,都是正常的。
现在对global模块中的初始化方法的修改就会影响到整个网站的所有页面。
所有global模块就是全局的。
现在我要单独对index模块加一个index模块内的全局方法,要求这个方法在index模块所有方法执行前执行。
效果是所有index模块在显示global模块显示的红色 global 字之后显示 红色的 index 字。
其他模块不受影响。

最开始 ,我在index模块下写了这个
<?php
class IndexAction extends GlobalAction{
    public function _initialize(){
       header("Content-Type:text/html; charset=utf-8");
echo "<font color=red> index </font>";
     }   
}
?>

结果,发现这个方法覆盖了global的方法,虽然显示了 红色的 index 但是 红色的
global没了。

怎么才能实现我想要的在index模块下的全局方法,而又不与global的整站全局方法冲突呢?
谢谢

作者: tiantianhaoabc   发布时间: 2011-05-03

<?php
class IndexAction extends GlobalAction{
    public function _initialize(){
      parent::_initialize();// 执行父级 initialize方法
echo "<font color=red> index </font>";
     }   
}
?>

作者: luofei614   发布时间: 2011-05-03