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__ //当前页面地址