Smarty3結合MVC進行使用

在MVC框架中,一般咱們將Smarty模板對象建立在父類控制器(Controller)中.經過實例化獲得smarty對象,供子類使用.php

在初始文件init.php中有個咱們定義的自動加載函數。然而,smarty在本身內部也定義了一個自動加載函數.數組

當咱們實例化某個對象實例的時候,程序應該走哪一個自動加載函數呢?框架

關於自動加載的分析:函數

    ①實現PHP內部預保留的一個函數spa

        

function __autoload($classname){
    if(in_array($classname,$array)){
        include $classname.".class.php";    
    }
}

    ②定義一個函數,而後經過註冊,使其成爲自動加載函數   
code

    註冊自動加載函數:spl_autoload_register(callback $autoloadfunction);對象

    

function Mydefineautoload($classname){
    if(in_array($classname,$array)){
        include $classname.".class.php";    
    }
}
spl_autoload_register("Mydefineautoload");

    ③將方法註冊成爲一個自動加載函數it

class  bookstore{
    spl_autoload_register(array('bookstore','defineautoload'));
    //使用數組,第一個元素表明哪一個類,第二個元素表示須要被註冊的方法,其方法必須是個靜態方法
    public static function defineautoload($classname){
        if(in_array($classname,$array)){
        include $classname.".class.php";    
        }
    }
}
//若是在外邊
spl_autoload_register("bookstore::defineautoload");

上面咱們總結了三種方式來定義自動加載,那若是在程序中既有__autoload()又有咱們本身註冊的自動加載函數io

那程序會走哪一個自動加載函數呢?function

這裏有一個優先級的問題:

                ①註冊的自動加載函數或者方法,其優先級要比__autoload()的優先級要高

                ②對於註冊的自動加載函數或者方法,其優先級都是平級,無前後之分,程序會走兩個註冊的自動加載方法

spl_autoload_register能夠提升訪問級別

smarty在項目中使用須要注意:

    一  處理好spl_autoload_register

    二  模板經過smarty來使用

    三  在父類裏邊把smarty實例化好

相關文章
相關標籤/搜索