php网站模板怎么用建php模板?

一,模板引擎对开发的好处
Web模板,是由静态的HTML语言编写,通过动态标签可以解析变量等,模板引擎是一种软件库,允许我们
从模板中生成HTML代码,并指定显示动态内容。
模板引擎的特点:
1.鼓励分离:让更个系统的可读性和维护性得到提高。
2.促进分工:使得程序员和美工去专心处理自己的设计。
3.比PHP更容易解析:编译文件和缓存文件加载更快、占资源更少。
4.增加安全性:可限制模板设计师进行不安全的操作的能力避免误删误访问等。
模板引擎的产品:
PHP 有很多团队专门开发的模板引擎,比如 Smarty、Heyes Templates Class、
FastTemplate 等等。这些模板引擎我们直接拿过来使用,就可以完全实现以上的诸多
特点。 可是对于初学者来说, 了解模板引擎的原理可以更加深刻的理解为什么要使用模
板。所以,本章我们需要自己来创建一个模板引擎。
二.TPL模板流程图
当我们自己创建模板引擎的时候, 最大的好处就是从简。 因为很多团队编写好的模板引
擎,它的功能虽然很多很强大,安全性也很高。但缺点就是很多我们用不到,并且体积非常
TPL模板引擎设计流程图
来自李炎恢笔记,初学习。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9582次
排名:千里之外
转载:13篇
译文:11篇
(2)(3)(1)(12)(1)(13)PHP模板新手篇总结-php-电脑编程网PHP模板新手篇总结作者:我就喜欢 和相关&&标题:PHP模板新手篇总结对于PHP新人来说,是否一定需要模版呢?如果需要,如何选择?以下想法是对这次活动的总结,并不只属于PHPChina的观点,而是属于所有PHPer的想法: 对于PHP新人来说,“如果绝对新人,一点编程概念都没有,自然不应该用模板.如果是有ASP 基础的人开始学PHP,用点模板也是可以的. ”[来自url=/bbs/viewpro.?uid=274]MYSQL[/url]]“如果是一个纯粹新手,如果一上来看摸版,那样容易走偏。先写完一些基础代码。 把PHP手册中主要部分,例如字符串,数组等基础函数部分都看完,明白了。然后就可以尝试写一些程序和页面混合的小程序了。写上一段时间以后,继续多看看书。 书很重要,没有理论的支持,很容易走弯路。然后多看看一些前辈的代码。现在有一个工作需要你和美工配合,并且你已经开始考虑代码的执行效率了。那么你可以看看摸版了。同样这个时候你发现,很容易上手的!”[来自大白菜芯]“个人认为,对于新手上路,模板不是必需的。可以先以一个留言板之类的上手,练一段时间后,再学习一种模板处理方式,重写成模板形式。[来自seraph]”“当然如果能可视化的,在Dreamweaver里能正常显示的,新手可以考虑较快地开始使用模板。”[来自Bantu]“固然模板能提高编码效率,但我认为刚学php的话还是尽量自己编写代码,多了解一些细节部分的编码,以后使用模板时不至于太茫然.新手可以用不同的技术反复实现同一个例子,这样对于理解是很有帮助的.” [来自xlmo]在学习的时候,反复的不断换代码,显示一些测试、调试的输出,看输出的内容与预想的结果是否一致,这是一个很简单易行的学习、调试方式。可以很快的就理解体会到相关代码/函数/类的意图与思路。“三年前刚接触PHP的时候是PHP代码和HTML混写的,一直坚持了近两年时间,后来做一些项目时发觉有必要使用模板了,才开始使用。代码和HTML分离可以更好的做好分工,而且看上去更加有条理。开始的时候对于选择哪个模板我也犹豫了很久,最后还是选择了smarttemplate(注意,不是smarty),现在围绕smarttemplate做了一些小修改,用起来还比较顺手。”[来自diekiss]“我是一年前开始接触php了,一开始就用smarty模板来编写网页(当然,有人带着)开始用模板的时候是有点晕,但后来觉得越用越顺。我觉得新手上来就用模板还是有一下几点好处的1、可以先专注页面的功能逻辑,而不会被页面表现所累。如果一开始就在“”和“”中转来转去,新手往往会把更多的精力放在页面表现上,毕竟作为新手,先做出一个能动态变化的网页还是颇有成就感的。但关注页面表现,往往会忽视了页面的整体逻辑流程,而且在满页的“echo &...”中也不利于形成良好的编码规范2、模板是大势所趋,一开始就将逻辑和表现分离,可以不用再经历转向模板的过程。当然,对于新手来说,接触模板最好有人指导,这个条件对于一些新手来说可能不太容易实现。”[来自leeyupeng]“使用模板不是说它使程序更有效率(事实上,模板的效率相对会降低程序执行的效率),而是让自己的程序思路更清晰,维护更容易,改进更方便,重用性更好!对于初学者来说,我的建议和大白菜芯一样,先学好基础语法和面对过程编程(事实上这也很重要,有助于理解PHP的强悍之处),然后在实践中思考中去理解和使用模板!第一次使用模板的,选择phplib和fasttemplate这两个精简但很适用的模板工具比较好。最好能够自己看懂里面的代码,深刻理解其中的原理。然后你可以想想怎么去改进他们,比如不停的set_var是不是很麻烦,可不可以自动实现对所有标签的替换?如何处理好select标签?等等啦~~在次基础上,可以去使用smarty,比较它和phplib,fasttemplate的不同和优缺点,smarty的缓存机制的确是个好东西!如果你不能很好理解,可以去先参考下缓存原理的一些文章~。使用模板的目的都是程序容易维护,改进。在理解好模板后,你可以考虑如何让模板和自己程序更加合理的构成一个完整的架构,这个时候可以去看看设计模式和参考下其他的语言的优缺点,比如JAVA~ ”[来自feifengxlq]总的来说模板对于开发会有很大好处,比如最基本的就是将程序代码与设计分离开,这样就可以将代码开发工作与样式设计分离开,进而也可以达到日后更换界面方便。但是,对于一些小项目或者资源消耗比较大的来说这样做可能会使开发规范一些,但是可能会在运行时占用一些资源。模板一般都是函数定义解析,在解析的过程肯定会有一些效率上的折扣。所以我个人的看法就是,对于一些小项目,或者是界面样式要求不是很苛刻的来说,还是不要使用模板或者自己写一个模板处理方式比较好一些。比如,我的做法就是自己写一个模板处理的函数,与其说是模板倒不如说是预处理:直接将样式控制部分写到“模板”中,当然这是php文件里面的代码也是php正常代码,唯一同代码不同的是,这部分的文件都是仅仅处理显示方面的,然后将内容全部符值到一个变量中,在页面统一输出,这样做的好处是可以将一般模板类的代码转换解析去除掉、符值给一个变量输出在压缩上来说也可以达到最大(可能是我自己感觉如此,呵呵)。当然为了避免有人直接运行“模板”文件,可以在“模板”文件头做一些判断等等。只是个原理,偶做一个项目时候就这样处理的,由于代码关联比较紧,所以只说一下原理大家根据自己的需要来具体处理吧[来自Deepseath]总结,对于PHP新人来说,是否一定需要模版呢?其实,这个问题并没有明确的答案。但是如果你是处于PHP的起步阶段,并且没有高手指点的话,一开始就使用模板会比较困难。可以从一些PHP例子、PHP手册入手,学习环境搭建、基本语法等等基础知识。当对PHP有了比较清楚地认识并对语法比较熟悉时,可以接触PHP模板了,“可以直接理解三层结构”。[来自MYSQL]刚开始接触PHP模板时,可以选用一些简单的PHP模板。比如smartylight、PHPlib等,当然也可以在学习模板的时候去分析一些比较成功的代码,比如Discuz等。总之,如果你对PHP有了比较好的了解,同时对Webserver,Browser的WEB应用模式有了比较清楚的了解,你对模板的学习就会更加容易。这将大大地提高你的开发速度。 相关资料:|||||||PHP模板新手篇总结来源网络,如有侵权请告知,即处理!编程Tags:                &                    需求发布后1小时内收到服务商响应每个需求平均有10个服务商参与95%以上的需求得到了圆满解决所有需求不向雇主收取任何佣金流量暴涨,转化飙升,销量翻倍
建2个PHP网站,可以模板建站
有相似问题想解决?专业顾问来帮助您
发布需求, 托管赏金
匹配服务商
已退款、交易失败
已投标服务商
综合评分:5颗星
速度:4.84
服务:4.83
态度:4.84
好评率:96.35%
TA的热销服务
做过相似案例1个
共有23个服务商参与报价,查看更多服务商报价
参与报价,开始赚钱
提交你的报价和方案
中标后交付作品
获得任务赏金
极速:10分钟急速响应
高品质:精选服务商提供服务
放心:不满意可退款投诉建议、广告投放、友情链接,联系QQ:
PHP框架模板原理分析
Loading...
149 次阅读
PHP框架现在是一种很流行的东西了,很多朋友开发应用与网站都会选择一个PHP框架或模板了,下面我们来看看PHP框架是如何实现的吧。
本文主要来聊聊框架理论,但不针对任何一款框架,不过任何一款框架都离不开这个理论,首先我们了解下框架的来龙去脉,任何技术的出现都是为了解决某个问题,之前的博客有讲过smarty,其存在就是为了html和php更好地分离开来。而所谓的&框架&是一种为了统一书写格式,访问方式而进行的自我约束行为,其实按照这个说法我们每个人基本上都或多或少的使用过自己定义的框架,比如说在没使用框架之前自己开发一个项目,有时候是一天无法完成的,我们为了防止混乱,为了更好地记忆我们会进行目录规划和程序的规划,潜意识的把程序分类,放到不同的文件夹,于是框架应运而生了,又比如说我们曾经做了一个CMS系统,如果我们又接手一个类似的项目,你会重复书写代码吗,答案肯定不会,但如果是别人的项目你拿来改其实是一件很蛋疼的事情的,因为你根本不知道他的这个CMS的规则是什么,即使是自己的项目时间久了如果自己没有固定的规范的话也是很容易忘记的,那么怎么样才能保证自己每次写的代码都可以按照一定的规范呢,把每个项目要用的东西挑出来,目录结构挑出来,以后无论什么项目都在这个基础上书写,那么属于自己的框架就出来了。
  但框架单纯这样是不完善的,那么框架应该有哪些能力呢,与其这样说我们不妨想想我们平时一定会写的代码一定会做的事情是什么呢,首先解决的是什么呢,为了减少路径问题,目录结构的安排其实很重要,有时候文件包含 再进行文件的移动总是一件很蛋疼的事情,最好的办法是什么呢,绝对路径,但同时存在了一个类似E:www 这样的问题,但这个值我们可以通过预定义变量$_SERVER[&DOCUMENT_ROOT&]获得,我们可以将其定义为常量,define(&ROOT_PATH&, $_SERVER[&DOCUMENT_ROOT&]);include ROOT_PATH . &/lib/mysql.php&;类似这样的文件夹怎么移动都不会有事的,那么就出现了一个固定的写法,为了解决路径问题而存在的写法,几乎每一页都会用到,还有模板的输出,数据库的连接,那么我们可以把这些代码封装起来,或者分离出来,每一页包含即可,被分离的这些部分其实就是一个小框架,为什么这么说呢,如果我们包含它们进来,例如smarty模板,肯定是实例化好的对象,那个量名已经固定,可能是$smarty 如果我们包含了这么个文件进来,这个量就不能再次进行赋值使用,这样下面部分的代码就无法进行使用了,由于包含的类,如数据类 上传类 图像类 分页类 位置已经写死在这个公共文件里,为了不改代码 这个目录就成了必须存在的了,目录格式固定,编写代码方式的约束,这就形成了框架。 
  多年来的程序员的总结交流及开发经验,大家总结了一些优秀的编写方式,最经典的是单点入口,什么是单点入口呢,之前我们总结了一些几乎每个程序都要用到的功能,这里依然存在一些问题,例如 在公共文件包含之前我们还是不知道根目录是多少,如果我们在每一个文件夹下面都放一个公共文件存在代码重复问题,哪天修改的话需要全部修改,需要找到需要多少个这样的文件,现在是多个程序包含一个程序,然后用户访问n个程序来完成各个功能,于是程序员就想可不可以反过来我用一个程序包含这些不同功能的程序,用户只访问这个程序就可以了呢,于是单点入口模式出现了,在网站首页的 index.php 写上每个程序都要用的部份 然后跟据某个量,比如一个 get 量来判断当前实际要执行的程序是哪一个,由 index.php 把它包含进来运行,这种由一个程序。完成所有功能的方式,称为 单点入口, 于是由这个入口程序和它对应的各个目录结构成为了一个框架。
  出于安全在包含文件的时候往往都会固定目录,不然就容易出漏洞 所以,往往会在路径头尾加个限制。例如
include &./app/& . $_GET['url'] . &.php&;
那路径就只能写成类似这样index.php?url=news/list,实际包含的是 /app/news/list.php 当然了,实际的情况,还要检查一下这个程序文件是否存在之类的。
&完整一点的话。我们可以这样写这个入口文件。
//这里写绝对路径
//这里写数据库连接
//这里写模板初始化,配置
//这里判断连接变量
//这里包含文件进来运行
//这里输出模板
//这里关闭数据库
&一个面向过程的单点入口框架就完成了, 是不是有觉得每次都在地址栏带一个 get 不方便? 那我们可以换一个写法,例如 tp 框架最喜欢用的 http://localhost/index.php/news/list后面的 /news/list 由程序转成 php 路径包含进来就可以了。在 Apache 环境中,这个 /news/list 可以由服务器变量的 PATH_INFO 取得,如果没有的话。也可以用 REQUEST_URI 取得接近的 ,IIS 下面,有 HTTP_X_REWRITE_URL 可以取得这个值 ,自从单点入口模式出现之后,而且oop开发模式从php5开始大行其道,各种oop设计的框架让我们眼花缭乱,但是万变不离其宗,依然是什么入口方式,路径结构是什么样的,文件名的命名规则,用什么样的访问方式,可以运行哪个程序。用oop开发的框架,不外乎就是把主程序改写成为了一个类,
//包含共用文件,实例化各个类啥的
页面-&初始化();
//把用户发来的网址转成要包含的路径
页面-&处理网扯();
//在这里包含程序运行
页面-&运行()
//输出模板
页面-&输出()
各种各样的框架只是为我们准备了一个规矩罢了。。在我们的开发累计的过程中,我们常常会把一些常用的类封装成类,例如,数据库类,文件上传类,图片处理类,邮件收发类,远程访问类,各种接口类&&这个时候,我们就会希望框架能给我们提供一个好一点调用类的方法, 也就是所谓的&扩展性& ,比如 TP 框架的 Db 类 。如果不用其自带的类库只用它们的核心框架,其实几个文件就够了。
&TP 框架支持三种访问格式。
/news/list
/index.php/news/list
/index.php?m=news&a=list
第一种需要服务器的 urlrewrite 支持,后面两种可以直接用,
&事实上,Zend 框架也差不多 文件的包含方式是。以类的形式包含,执行的其实是:/文件夹/对象/方法,这种做法有优势。因为在同一个功能中,相似的代码很多,封装到同一个类里面,可以更高效的重复使用代码 ,
class NewsAction {
&&& public function head() {
&&&&&&& 在这里处理每一页头部
&&& public function index() {
&&&&&&& $this-&head();
&&&&&&& 在这里处理这一页
&&& public function show() {
&&&&&&& $this-&head();
&&&&&&& 在这里处理这一页
还可以利用构造函数等,使每一个功能,在刚进来的时候就都做了同一件事情。以上就是简单框架的理论。
制作应用原理
index.php 主入口文件
& define('ISEXIST',true);
& require &init.php&;
& $control = new Controller();
& $control -& Run();
---------------------------------------------------------------------------------------------
init.php 文件
& if(!defined('ISEXIST'))
&& exit(&请从入口文件运行程序&);
& header(&Content-Type:text/charset=utf-8&);
& if(!defined('ROOT_PATH'))
&& //这里动态的声明,''是转义反斜线,默认''为转义字符
&& define('ROOT_PATH',str_replace('','/',dirname(__FILE__)));
& require ROOT_PATH.'/a/config.php';
& require ROOT_PATH.'/a/controller.class.php';
& require ROOT_PATH.'/a/view.class.php';
& require ROOT_PATH.'/a/model.class.php';
----------------------------------------------------------------------------------------------
config.php 文件
& if(!defined('ISEXIST'))
&& exit(&请从入口文件运行程序&);
& $C = array(
& 'URL_MODE'=&1,//url模式,1为普通模式,2为path_info模式
& 'DEFAULT'=&'welcome',//默认的控制器
& 'DEFAULT_ACTION'=&'index'//默认的方法
-----------------------------------------------------------------------------------------------
controller.class.php 文件
class Controller
&public function Run()
& $this-&Analysis();
& //开始解析URL获得请求的控制器和方法
& $control = $_GET['con'];
& $action = $_GET['act'];
& $action = ucfirst($action);
& //这里构造出控制器文件的路径
& $controlFile = ROOT_PATH . '/Controllers/' . $control . '.class.php';
& if(!file_exists($controlFile)) //如果文件不存在提示错误, 否则引入
& exit(&{$control}.class.php控制器不存在&br&&. &请检查: &.$controlFile.&是否存在&br&&);
& include($controlFile);
& $class = ucfirst($control); //将控制器名称中的每个单词首字母大写,来当作控制器的类名
& if(!class_exists($class)) //判断类是否存在, 如果不存在提示错误
&exit(&{$control}.class.php中未定义的控制器类& . $class);
&$instance = new $class(); //否则创建实例
&if(!method_exists($instance, $action)) //判断实例$instance中是否存在$action方法, 不存在则提示错误
&exit(&$class类中不存在方法:&. $action);
&$instance-&$action();
&protected function Analysis()
&//$GLOBALS['C']['URL_MODE'];
&global $C; //包含全局配置数组, 这个数组是在Config.ph文件中定义的,global声明$C是调用外部的
&if($C['URL_MODE'] == 1)
&//如果URL模式为1 那么就在GET中获取控制器, 也就是说url地址是这种的 [url=http://localhost/index.php?c]http://localhost /index.php?c[/url]=控制器&a=方法
&$control = !empty($_GET['con']) ? trim($_GET['con']) : '';
&$action = !empty($_GET['act']) ? trim($_GET['act']) : '';
&else if($C['URL_MODE'] == 2) //如果为2 那么就是使用PATH_INFO模式, 也就是url地址是这样的&&& [url=http://localhost/index.php/]http://localhost/index.php/[/url]控制器/方法 /其他参数
&if(isset($_SERVER['PATH_INFO']))
&//$_SERVER['PATH_INFO']URL地址中文件名后的路径信息, 不好理解, 来看看例子
&//比如你现在的URL是 [url=/index.php]/index.php[/url] 那么你的$_SERVER['PATH_INFO']就是空的
&//但是如果URL是 [url=/index.php/abc/123]/index.php/abc/123[/url]
&//现在的$_SERVER['PATH_INFO']的值将会是 index.php文件名称后的内容 /abc/123/
&$path = trim($_SERVER['PATH_INFO'], '/');
&$paths = explode('/', $path);
&$control = array_shift($paths);
&$action = array_shift($paths);
&//这里判断控制器的值是否为空, 如果是空的使用默认的
&$_GET['con'] = !empty($control) ? $control : $C['DEFAULT'];
&//和上面一样
&$_GET['act'] = !empty($action) ? $action : $C['DEFAULT_ACTION'];
--------------------------------------------------------------------------------------------------
welcome.class.php 文件
& class Welcome
&& function Index()
&&& echo '欢迎使用此CMS系统';
&& function Run()
&&& echo 'Hello';
&& function Show()
&&& echo '方法名show';
IT技术书籍推荐:
GitHub入门与实践
大塚弘记 (作者), 支鹏浩 (译者), 刘斌 (译者)
《GitHub入门与实践》从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作,使用GitHub的开发流程以及如何将GitHub引入到企业中。在讲解GitHub的代表功能Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行Pull Request并共同维护。
《GitHub入门与实践》旨在指导各位读者如何在开发现场使用GitHub进行高效开发,适合所有想要使用GitHub进行开发的程序员或团队阅读。
相关推荐:1、2、3、4、5、6、7、8、9、10、
随机关键词:
正在加载...
最新微信头条

我要回帖

更多关于 phpcms怎么更改模板 的文章

 

随机推荐