文档章节

Smarty3结合MVC进行使用

PHer
 PHer
发布于 2014/06/18 10:28
字数 469
阅读 656
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
6
0
现场看路演了!

HiBlock
昨天
16
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
10
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部