文档章节

Smarty3结合MVC进行使用

PHer
 PHer
发布于 2014/06/18 10:28
字数 469
阅读 649
收藏 2

在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实例化好

© 著作权归作者所有

共有 人打赏支持
PHer
粉丝 4
博文 121
码字总数 38443
作品 0
成都
程序员
osadmin 开源管理后台 v2.0.0 发布

增加自定义模块图标 重大升级:osadmin使用的模板引擎smarty从2.x升级到3.x,目前使用的是3.1.15. 从1.x升级到2.x基本需要全部覆盖,smarty2和smarty3的语法等功能不太相同,smarty3更强大。...

somewhereyu
2013/10/21
3K
20
smarty模板文件去回车和空行,让文件变的小一点

smarty是一款优秀的模板引擎,不仅可以自定义方法,还要以进行页面编译缓存,功能相当完美。 之前同事,问我smarty里模板文件可不可以把模板源文件去除一些没必要的空格和回车了。 请看下面的...

lock-li
2016/04/26
130
0
smarty3 对象属性赋值问题

用了smarty3, 好像不能使用{$object->property=xxx}方式给对象的属性赋值。请问下如何给注册了smarty模板变量的对象属性赋值呢? {$var=xxx}又可以,郁闷smarty太多限制了...

callmez
2013/02/10
579
4
smarty调用php中的方法

smarty2、smarty3都支持此用法本人已测试 HTML {$Name|get_name} PHP function get_name($name) { } HTML {$Name|get_name:'zh'} PHP function get_name($name, $lang) { }......

柏新星
2013/09/11
0
0
smarty3 模板问题

smarty3 模板中代码 输出后的代码为 这样不能显示图片 ,何解?

AaronW
2014/09/14
119
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

这些Spring中的设计模式,你都知道吗?

设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。 Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行...

Java填坑之路
28分钟前
1
0
Spring Aop原理之Advisor过滤

在上文(Spring Aop之Advisor解析)中我们讲到,Spring Aop对目标bean的代理主要分为三个步骤:获取所有的Advisor,过滤当前bean可应用的Advisor和使用Advisor为当前bean生成代理对象,并且上文...

爱宝贝丶
39分钟前
0
0
JMockit学习教程

1 JMockit中文网 我觉得如果仅仅是开发自测的话,把JMockit中文网认真看一遍,就可以在项目中使用JMockit了。 http://jmockit.cn/index.htm 2 JMockit中文教程 官方文档中文版。对于不喜欢看...

SuperHeroes
51分钟前
0
0
Linux服务器几乎从不采用Arch Linux?

我们见得多的Linux服务器系统一般都是什么Ubuntu Server啊,什么Cent OS啊,什么Fedora啊,或者企业采用的Red Hat啊,为什么几乎没有Arch Linux呢?下面我将从若干个方面指出Arch Linux在服务...

linux-tao
今天
0
0
js 函数柯里化 闭包

参考 https://mp.weixin.qq.com/s/GEHL3jarDdAAcr5tQGjmDg 一个统计求和的函数 需要知道整个数组的信息,然后遍历求值 function countMoney() { let money = 0 // 温馨提示:arguments...

阿豪boy
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部