zoukankan      html  css  js  c++  java
  • php常见面试(Smarty及相关知识)

    1、Smarty简介: 是一种php模板引擎,它分开了后台程序和前台页面内容,使程序员和美工分工合作。还有其它模版引擎实现同样的目的。

    2、Smarty使用:

      建立php文件:
        包含smarty类文件  include(Smarty/Smarty.class.php);
        实例化smarty对象  $smarty = new Smarty();
        通过smarty对象定义模板文件保存位置(及其它属性)
        为模板定义变量 或为模板传数据(一般是从数据库中查询的数据)
        指定调用的html文件即模板文件

      创建模板文件:
          在模板文件中显示数据

    具体使用:

    第一步、定义php文件
    <?php
    //1、包含Smarty类文件
    require("smarty/Smarty.class.php");
    
    //2、实例化Smarty类
    $smarty = new Smarty();//设置各个目录的路径,这里是安装的重点
    $smarty->template_dir ="./templates";  //模板存放位置
    $smarty->compile_dir ="smarty/templates/templates_c"; //编译路径
    $smarty->config_dir = "smarty/templates/config";  //配置文件存放位置
    configs
    $smarty->cache_dir ="smarty/templates/cache"; //缓存目录存放位置
    //smarty模板有高速缓存的功能,如果这里是true的话即打开caching,但是    会造成网页不立即更新的问题,当然也可以通过其他的办法解决
    $smarty->caching = false;
    $smarty->left_delimiter = "{#"; //重新定义边界,因为默认边界“{}“符,在html    页面中嵌入js脚本文件编写代码段时使用的就是”{}“符,自定义边界符还可以    是<{ }>, {/ /} 等
    $smarty->right_delimiter = "#}";
    $hello = "Hello World!";//赋值
    $smarty->assign("hello",$hello);//引用模板文件 为模板传值
    $smarty->display('index.tpl');   //调用模板
    ?>
    执行index.php就能看到Hello World!了

    3、基本语法
    1)    注释
    语法:{* 注释内容 *}

    2)    assign()
    注解:给模板进行变量赋值;

    3)    display()
    注解:显示模板;

    4)    fetch()
    注解:获得模板编译输出后的结果,类型为字符串,等同于  echo display();

    3、变量来的来源
    1)    PHP分配
    2)    配置文件
    ① 引入配置文件
    ② 使用配置文件中变量
    `注意:配置文件中(cfg.php)的写法如下

      扩展:smarty 中的文件包含写法:
    3)    保留变量
    4、变量调节器 lower
    1)    date_format
    2)    Default
    注解:当变量是unset或者empty的字符串时,默认值将显示。

    5、内建函数
    1)    config_load
    注解:{config_load}用于从配置文件中 加载配置变量#variables#。
    (参考demo如上配置)

    2)    foreach
    注解:建议采用这种(smarty 3.0)写法
    3)    include
    注解:{include}用于载入其他模板到当前模板中
    (参考demo如上配置)

    4)    if else if   手册自己做
    5)    literal
    注解:{literal}可以让一个模板区域的字符原样输出。
    6)    php
    重要说明
    Smarty已经废弃{php}标签,强烈建议不要使用。

    第九单元:设计模式
    一、单例模式
    1、概念了解
    1)    Q:什么是单例模式?
    A:单例模式一种设计模式,一个类只能实例化一个对象;
    2、编写单例类
    1)    分析:为了防止在类外使用new关键字实例化对象,那么首先new 是万恶之源
    问:该怎么做能让它实例化不成功?
    答:类内部私有的构造方法。
    2)    私有了构造方法,那么如何才能是实例化一个对象呢?
    答:关闭了一扇门,可以打开一扇窗啊,开放一个公开的方法,用来实例化对象。
    3)    若想每次得到的都是同一个对象,请思考该怎么做?
    答:私有静态化成员一个成员属性,用来存储实例化后的对象,为了看出两次实例化后的是两个对象,在实例化对象时,加入了随机数,代码如下

    注:instanceof 用来判断对象是否属于某个类。
    通过打印,我们可以看出这两对象中随机数是一样的,思考:此时我们的单例就完成了吗?
    2、截止到目前单例类完成了吗?思考如下问题
    4)    Q:通过Single::getInstance 得到一个对象$obj1,克隆一个$obj2,思考 $obj1和$obj2相同吗?如果不同如何禁止这种克隆行为?
    A:不相同,私有化克隆魔术方法可禁止克隆。

    5)    思考:如果子类继承了该类,(构造函数被重写)那么又可以new对象了,
    Q:请问这样得到的对象是同一个的吗?
    A:同过new出来的,那肯定不是了。
    Q:我们写的单例类这么一继承就不灵了。那么该如何解决呢?
    A:final 关键词修饰类方法,
    Final知识总结:
    ① final 修饰符不能修饰类属性,报如下错误:
    ② Final 修饰符修饰类,该类不能继承;
    ③ Final修饰符修饰成员方法,成员方法可以被继承,但不可以被重写。

  • 相关阅读:
    appium+python 通信原理(下)
    appium+python 通信原理(上)
    百度地图自己添加 标识地点 代码
    让织梦CMS的后台编辑器支持优酷视频
    织梦dede标签tags的美化教程
    ECharts 是一款开源
    dede 留言板访问的目录
    数据库简单的查询
    DEDE在下载文件时会生成table
    JS移动客户端--触屏滑动事件
  • 原文地址:https://www.cnblogs.com/yx520zhao/p/6913478.html
Copyright © 2011-2022 走看看