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修饰符修饰成员方法,成员方法可以被继承,但不可以被重写。

时间: 2024-08-01 06:50:30

php常见面试(Smarty及相关知识)的相关文章

程序员面试笔试宝典学习记录(三)(数据库相关知识)

关系数据库系统与文件数据库系统的区别如下: (a)关系数据库系统的主要特征是数据的结构化,而文件数据库系统是数据的非结构化. (b)关系数据库系统中,用户看到的逻辑结构是二维表,而文件数据库系统中,基本元素是文件. (c)文件数据库系统可以实现多媒体文件管理,支持C/S工作模式. acid,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability). 数据查询:select sele

【转载】前端面试“http全过程”将所有HTTP相关知识抛出来了...

原文:前端面试“http全过程”将所有HTTP相关知识抛出来了... 来一篇串通,一个http全过程的问题,把所有HTTP相关知识点都带过一遍 http全过程 输入域名(url)-->DNS映射为IP-->TCP三次握手-->HTTP请求-->HTTP响应-->(浏览器跟踪重定向地址)-->服务器处理请求-->服务器返回一个html响应-->(视情况决定释放TCP连接)-->客户端解析HTML-->获取嵌入在HTML中的对象重新发起http请求

面试总结(一)——Java基础相关知识

面试总结(一)--Java基础相关知识 最近在面试,所以总结下面试容易问到的知识点,用来备份查看用. 若需转载,请注明出处. 1.面向对象的特点: 1.将复杂的事情简单化 2.面向对象将以前过程中的执行者,变成了指挥者 3.面向对象思想是符合人们思考习惯的思想 2.面向对象特征: 1.封装:隐藏对象的属性和实现的细节,仅对外提供公共访问方式 好处:将变化隔离,便于使用,提高复用和安全性. 原则:将不需要对外提供的内容隐藏起来,隐藏属性,提供公共方法对其访问. 2.继承:提高代码复用性,继承是多态

深入浅出安卓学习相关知识,如何从零学好移动开发

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mobile-develop 由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向. 有不少同学问我如何学习安卓,要学些什么,难不难学.之前一直没有想好应该怎么回答这个问题,只是简单的说安卓自身门槛不高,并不难学.因为我觉得准确回答一个类似这样的问题往往需要灵感.现在根据我的学习体验,做个大概的总结. 1.我为什么学安卓 我从刚开始接触安卓开发到现在也有两三年的时间了

第二章 面试需要的基础知识

2.1 面试官谈基础知识 基础很重要 算法.复杂的 编程能力 数据结构 2.2 编程语言 程序员写代码总是基于某一种编程语言,因此技术面试的时候直接或者间接都会涉及至少一种编程语言.在面试的过程中,面试官要么直接问语言的语法,要么让应聘者用-~种编程语言写代码解决一个问题,通过写出的代码来判断应聘者对他使用的语言的掌握程度.现在流行的编程语言很多,不同公司开发用的语言也不尽相同.做底层开发比如经常写驱动的人更习惯用C, Linux下有很多程序员用C++开发应用程序,基于Windows的C#项目已

Redis的那些最常见面试问题

转发:https://zm10.sm-tc.cn/?src=l4uLj4zF0NCIiIjRnJGdk5CYjNGckJLQrIqNiZaJnpOWjIvQj9DHzs7Gx8bO0ZeLkpM%3D&uid=38c62520cad411e395617b1a9eafc437&hid=d90c15428a0bcc481db8de8bfeeea43f&pos=2&cid=9&time=1533133656806&from=click&restype=1&

Redis的那些最常见面试问题(转)

Redis的那些最常见面试问题         1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存.因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性 能最快的Key-Value DB. Redis的出色之处不仅仅是性能,Redi

php学习day7--函数的相关知识

今天我们主要学了函数的相关知识,是个比较基础的知识,但也是很重要的. 一.函数 函数就类似于一个工具,我们写好函数之后可以直接进行调用,可以很大的减少代码的从用性,提高页面性能和可读性. 1.函数的定义 在php中函数的定义方式为: function  name($形参1,$形参2.....){ 要执行的代码 return  123: } 在上方的函数定义式中,name代表函数名,小括号内是形参,是用来传递参数,花括号中的就是调用时需要执行的代码. 函数的调用方式: name(实参1,实参2,.

机器学习&amp;数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

http://www.cnblogs.com/tornadomeet/p/3395593.html 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大.