Smarty3结合MVC进行使用
博客专区 > PHer 的博客 > 博客详情
Smarty3结合MVC进行使用
PHer 发表于3年前
Smarty3结合MVC进行使用
  • 发表于 3年前
  • 阅读 573
  • 收藏 2
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: ​注册自动加载函数:spl_autoload_register(callback $autoloadfunction);

在MVC框架中,通常我们将Smarty模板对象创建在父类控制器(Controller)中.通过实例化得到smarty对象,供子类使用.

在初始文件init.php中有个我们定义的自动加载函数。然而,smarty在自己内部也定义了一个自动加载函数.

当我们实例化某个对象实例的时候,程序应该走哪个自动加载函数呢?

关于自动加载的分析:

    ①实现PHP内部预保留的一个函数

        

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

    ②定义一个函数,然后通过注册,使其成为自动加载函数   

    注册自动加载函数:spl_autoload_register(callback $autoloadfunction);

    

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

    ③将方法注册成为一个自动加载函数

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()又有我们自己注册的自动加载函数

那程序会走哪个自动加载函数呢?

这里有一个优先级的问题:

                ①注册的自动加载函数或者方法,其优先级要比__autoload()的优先级要高

                ②对于注册的自动加载函数或者方法,其优先级都是平级,无先后之分,程序会走两个注册的自动加载方法

spl_autoload_register可以提高访问级别

smarty在项目中使用需要注意:

    一  处理好spl_autoload_register

    二  模板通过smarty来使用

    三  在父类里边把smarty实例化好

共有 人打赏支持
粉丝 4
博文 118
码字总数 38443
×
PHer
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: