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修饰符修饰成员方法,成员方法可以被继承,但不可以被重写。
php常见面试(Smarty及相关知识)的更多相关文章
- 【面试】我是如何在面试别人Redis相关知识时“软怼”他的
事出有因 Redis是一个分布式NoSQL数据库,因其数据都存储在内存中,所以访问速度极快,因此几乎所有公司都拿它做缓存使用,所以Redis常被称为分布式缓存. 一次我的一个同事让我帮他看Redis相 ...
- 【面试】我是如何面试别人List相关知识的,深度有点长文
- 【转载】前端面试“http全过程”将所有HTTP相关知识抛出来了...
原文:前端面试“http全过程”将所有HTTP相关知识抛出来了... 来一篇串通,一个http全过程的问题,把所有HTTP相关知识点都带过一遍 http全过程 输入域名(url)-->DNS映射 ...
- 常见面试第二题之什么是Context
今天的面试题,也就是我们常见面试题系列的第二题,我们来讲一讲android中的context.我相信大家android开发者一定对于这个context非常熟悉,肯定都有使用过,肯定没有没使用过的.但是 ...
- Redis的那些最常见面试问题
随笔:经过长达一周的奔波和面试,电话面试,回首今天终于成功的入职了,总共面试了大概10家公司,包括阿里,京东,IBM等等,京东技术过了,学历因为非统招就被pass了,阿里面了2次电话面试就没下文了,估 ...
- (转)Redis的那些最常见面试问题
背景:最近在准备面试相关的题目,发现redis基本一片空白,有必要好好总结下. 转自:https://www.cnblogs.com/Survivalist/p/8119891.html 1.什么是r ...
- Redis的那些最常见面试问题(转)
Redis的那些最常见面试问题 1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型 ...
- Redis的最常见面试问题
Redis的那些最常见面试问题[转] 1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据 ...
- 电路相关知识--读<<继电器是如何成为CPU的>>
电路相关知识–读<<继电器是如何成为CPU的>> */--> *///--> *///--> 电路相关知识–读<<继电器是如何成为CPU的> ...
随机推荐
- python 日期排序
转自:http://www.cnblogs.com/lkprof/p/3179850.html,感谢分享~ 问题1:如果日期中有千年以前的情况(没法用格式化函数),如('2010-11-23','19 ...
- Dynamics CRM RibbonWorkbench工具使用
这边用的是RibbonWorkbench2016的工具,导入RibbonWorkbench2016解决方案即可.导入成功后在解决方案下面会多出一个快捷键小图标. 一.基本介绍 二.列表页获取选中记录的 ...
- 环境变量PATH超长问题[转]
症状回放: 最近安装一个Delphi的控件,结果,在安装之后启动Delphi时出现了找不到相关文件的错误.一开始以为是Delphi内的Library路径没有添加,查看,一切正常.再次启动Delphi, ...
- 一个简单的例子理解Kubernetes的三种IP地址类型
很多Kubernetes的初学者对Kubernetes里面三种不同的IP地址和工作机制理解得不是很清楚. 本文我们通过一个最简单的例子来学习. 用如下命令行创建一个基于nginx的deployment ...
- MySQL学习(四)查询
一.group_concat()函数.把groupby的分组中字段数据组合显示出来 select s_id , GROUP_CONCAT(要显示的字段名) from table group by 分 ...
- Jmeter启动报错:unable to access jarfile ApacheJmeter.jar error 原因:下载的src包没有这个jar包,需下载binary包
安装好jdk并配置了环境变量,下载Jmeter包解压启动jemter.bat提示 unable to access jarfile ApacheJmeter.jar error 原因: 从官网 htt ...
- Echarts横坐标倾斜,顶部显示数字
最近项目使用到Echarts,所以学习了下 根据API,实现Echarts很简单,在这就不多说了,下面就说说项目中碰到的一些需求 1.由于横坐标很多,导致数据不能展示完整,所以需要设置横坐标样式倾斜展 ...
- HDU 2082 普通型母函数
分析: 组成单词好说,价值如何体现? 改变指数就行,例如: 这样,组成的单词,指数就是权值,多项式相乘,指数小于50的就OK: #include <bits/stdc++.h> using ...
- div可编辑框,去除粘贴文字样式😄
上个月做了个聊天的需求(网页版的).说到聊天都想到输入框,说到输入框都会想到input,但是input标签是不支持插入图片的(包括areatext标签).查阅了一些资料就看到div标签有一个属性con ...
- 【题解】洛谷P1463 [POI2002][HAOI2007] 反素数(约数个数公式+搜索)
洛谷P1463:https://www.luogu.org/problemnew/show/P1463 思路 约数个数公式 ai为质因数分解的质数的指数 定理: 设m=2a1*3a2*...*pak ...