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__ //當前頁面地址