码迷,mamicode.com
首页 > 其他好文 > 详细

ecmall源码中的 function _config_view()-关于重写

时间:2014-06-06 17:24:17      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

ecmall中类库的继承过程:

defaultAPP->MallbaseApp->FrontendApp->EcBaseApp->BaseApp->Object

在baseAPP中有三个方法,如下:

bubuko.com,布布扣
   function assign($k, $v = null)
    {
        $this->_init_view();
        if (is_array($k))
        {
            $args  = func_get_args();
            foreach ($args as $arg)     //遍历参数
            {
                foreach ($arg as $key => $value)    //遍历数据并传给视图
                {
                    $this->_view->assign($key, $value);
                }
            }
        }
        else
        {
            $this->_view->assign($k, $v);
        }
    }


  function _init_view()
    {
        
        if ($this->_view === null)
        {
            $this->_view =& v();
            $this->_config_view();//配置     
        } 
    }


 function _config_view()
    {
  
        echo  ‘1234567890‘;
    }
bubuko.com,布布扣

在defaultApp,MallbaseApp,FrontendApp EcbaseAPP 中,均重写了 _config_view方法。
这样新建一个 defaultApp的新类,他就继承了BaseApp的很多方法。调用defaultApp继承自BaseApp的assign方法,assign方法会调用BaseApp的_init_view方法,BaseApp的_init_view方法又调用_config_view方法。

      问题就出现在这里,事实上BaseApp的_init_view方法不会调用自身的_config_view方法,所以,无论自身的_config_view代码写

多少东西,都是不会执行的。真正执行的是defaultApp重写之后的_config_view方法。

     如果想要执行父类的_config_view方法,需要使用 parent::_config_view重新调用。这就是重写引出的问题。

 

 

ecmall源码中的 function _config_view()-关于重写,布布扣,bubuko.com

ecmall源码中的 function _config_view()-关于重写

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/z497688734/p/3766344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!