php 实现简易模板引擎
1.MVC简介
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式(详情自己百度):
1. Model(模型)表示应用程序核心(比如数据库记录列表)。
2. View(视图)显示数据(数据库记录)
3. Controller(控制器)处理输入(写入数据库记录)。
MVC的流程图如下(来源百度百科):
2.本文重点:模板引擎
在视图层,PHP可以采用两种方式编写:
- PHP代码和HTML代码混写,甚至JavaScript等
采用模板引擎使得数据和显示分离,这种方式更易于维护。
首先让我们来看一下混写代码:
<!DOCTYPE html>
<html>
<head>
<title>混写代码</title>
</head>
<body>
商品信息:
<?php
mysql_connect("localhost","root","") or die("conect failed:".mysql_error());
mysql_select_db("shop");
$result = mysql_query("select * from sh_goods");
?>
<ul>
<?php while (mysql_fetch_array($result)) {?>
<li><?php echo $result['good_name']; ?></li>
<?php } ?>
</ul>
<?php
mysql_free_result($result);
mysql_close();
?>
</body>
</html>
这种方式往往随着前端逻辑的复杂度变得越来越大,代码的可读性也会变得很差,代码的可重用性也不好。(比如我们需要重复的编写从数据库中获取数据的代码)
模板引擎有两种机制
接下来,我们用原生态模板机制来实现
1.原生态机制
该机制主要是执行数据库操作的代码get_data.php单独放到一个文件中,显示的hmtl代码show_page.php放到另一个文件中,然后在html代码show_page.php中包含执行数据库操作的代码get_data.php.代码如下:
get_data.php
<?php
mysql_connect("localhost","root","") or die("conect failed:".mysql_error());
mysql_select_db("shop");
$result = mysql_query("select * from sh_goods");
$data = array();
while (mysql_fetch_array($result)) {
$data[] = $result['good_name'];
}
mysql_free_result($result);
mysql_close();
?>
show_page.php
<!DOCTYPE html>
<html>
<head>
<title>分离代码</title>
</head>
<body>
商品信息:
<ul>
<?php
include 'get_data.php';
foreach ($data as $key => $value) {
?>
<li><?php echo $value['good_name']; ?></li>
<?php } ?>
</ul>
</body>
</html>
该机制比较简单,符合PHP的语法和使用的习惯,显然比混写代码更容易维护。但是,有时考虑到网站的性能,我们想要缓存代码的时候,这种方法就不能提供支持了。类似的,错误处理,可配置化,脱离php语法等高级功能也不容易实现。
2.更强大的模板机制
该机制与上一个机制刚好相反,在负责数据操作的文件中包含模板,模板只负责显示即可,不用考虑php操作。
本引擎的执行流程如下:
php 实现简易模板引擎的更多相关文章
- KOA的简易模板引擎实现方式
上上一期链接--也就是本文的基础,参考KOA,5步手写一款粗糙的web框架 上一期链接--有关Router的实现思路,这份Koa的简易Router手敲指南请收下 本文参考仓库:点我 上一期科普了Rou ...
- js 简易模板引擎 , 持续更新。。。
<script> var _mytpl = (function(){ var _verson = 1.0; return { _data:{}, load:function(html,da ...
- MVC开发模式以及Smarty模板引擎的使用
Linux 全局安装 composer 将目录切换到/usr/local/bin/目录 cd /usr/local/bin/ 在 bin 目录中下载 composer curl -sS https:/ ...
- PHP实现简易的模板引擎
PHP实现简易的模板引擎 1.MVC简介 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式(详情自己百度): 1. Mode ...
- 简易js模板引擎
前面 js 模板引擎有很多很多,我以前经常用 art-template ,有时候也会拿 vue 来当模板引擎用. 直到...... 年初的时候,我还在上个项目组,那时候代码规范是未经允许不能使用 [外 ...
- Mustache.js前端模板引擎源码解读
mustache是一个很轻的前端模板引擎,因为之前接手的项目用了这个模板引擎,自己就也继续用了一会觉得还不错,最近项目相对没那么忙,于是就抽了点时间看了一下这个的源码.源码很少,也就只有六百多行,所以 ...
- JST(JavaScript Trimpath)前端模板引擎简介
JST(JavaScript Trimpath)前端模板引擎简介及应用 今天在做某系统日志列表的时候用到了这个玩意儿.刚开始只是根据别人的例子照葫芦画瓢完成了日志列表及对应详情,晚上有空了才仔细去网上 ...
- JS模板引擎 :ArtTemplate (2)
上一篇初略的介绍了一下javascript中的模板引擎,有兴趣的可以戳 这里 . 这一篇将带着大家一起做一个简易的模板引擎, 上一篇介绍到:模板引擎其实做的就是两件事. 根据一定的规则,解析我们所定义 ...
- pug模板引擎(原jade)
前面的话 为什么要引入pug,pug有什么特别之处呢?有一些嵌套层次较深的页面,可能会出现巢状嵌套,如下图所示 在后期维护和修改时,一不小心少了一个尖括号,或者某个标签的开始和闭合没有对应上,就会导致 ...
随机推荐
- jquery点击目标DIV以外关闭效果
$(function(){ $(".cover").hide(); $("#call").click(function(){ console.log(" ...
- 通过一个表的id同时查询多个表的数据
'select c.字段名,x.字段名 as 改为新的显示名,x.字段名 from 表名1 b,表名2 c,表名3 x where b.字段id=' . $id . ' and b.`字段id`=c. ...
- WPF 命令的简单总结
WPF的命令Command主要解决的问题,就是代码复用.一个很重要的应用意义,在于它将很多地方需要的调用的相同操作,以统一的方式管理,却又提供了不同的访问结果. 举个例子来说,我可能通过“点击butt ...
- 关于UI_USER_INTERFACE_IDIOM() & UIDevice.model
使用 UI_USER_INTERFACE_IDIOM() 进行区分 (ios 3.2 >=) 无法区分iphone和ipod if (UI_USER_INTERFACE_IDIOM() == U ...
- 初始go语言
一.创建第一个go语言程序:打印hello world! package main import "fmt" func main() { fmt.Println("Hel ...
- 在Linux下访问Windows共享目录的配置方法
在Linux下访问Windows共享目录的配置方法 1.在Windows上设置一个共享目录 如:将d:\RedHat_disk设置为共享目录 2.在Windows上创建一个用户,如tommy,密码11 ...
- Oracle 连接字符串
<!--web.config--><connectionStrings> <add name="MSSQL" connectionString=&qu ...
- 私有云Mariadb集群搭建
MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性, 同时提高系统的负载能力,集群部署是必不可少的. MariaDB Gale ...
- HAProxy 代理负载均衡
HAProxy HAProxy是免费 高效 可靠的高可用及负载均衡解决方案,该软件非常适合于处理高负载站点的七层数据请求,HAProxy的工作模式使其可以非常容易且安全地集成到我们现有的站点架构中.使 ...
- APICloud界面间跳转
UZModule提供属性controller,可通过该控制器对目标控制器进行push或者present操作. // push[self.viewController.navigationControl ...