1.关于类继承时候调用关系

      Action:
  
     class BaseAction extends Action  {
 
          function _initialize()
         {
        echo "initialize";
        $this->display("tests");
         }
 
          //function __construct()
          // {
          //  echo "construct";
    //      $this->display("tests");
          // }

    }
 
      class IndexAction extends BaseAction{
  
   function index()
   {
      echo"index";
   }
  
   }
  
   Tpl/default/Index/test.html模版页内容:tests!
  
   由上可看出IndexAction继承于BaseAction,
   我们通过页面访问index.php 时  它会实例化IndexAction 在自身没有显示的构造方法时,
   会先调用父类的构造方法,而_initialize又是什么呢,他是该类初始化时调用的
   注意它不是PHP特有的 是此框架的。而__construct()是PHP的。
  
   如上调用 会输出 initialize  tests   index  可以看到先是执行__initialize()方法  在执行index方法
  
   而在__initialize()方法内有个$this这个对象 其实他是IndexAction的实例对象,
  
   所以在执行display时会去找index目录下的模版文件。为什么要用这方法呢?
  
   __construct()不是也可以啊,不行 在执行 __construct()时,该对象其实是还没被实例化,执行 __construct()一试,
  
   那$this就会报$this non-object错误! 当两者方法共存时候 只会调用 __construct()内的.

 

如果使用了内置模板引擎的话,可以在模板文件里面使用一些已经定义好的特殊字符串,系统在解析模板的时候会自动替换成相关的系统常量,这些字符串的解析过程是在模板编译的时候进行的。这些可替换的字符串包括:

../public     //项目公共目录

__PUBLIC__    //网站公共目录

__ROOT__       //网站根目录

__TMPL__//当前模板目录

__APP__    //当前项目地址

__URL__   //当前模块地址

__ACTION__     //当前操作地址

__SELF__  //当前页面地址


  

posted on 2009-07-09 20:13  冷傲残痕  阅读(1386)  评论(1编辑  收藏  举报