PHP实现简易的模板引擎
1. Model(模型)表示应用程序核心(好比数据库记录列表)。 2. View(视图)显示数据(数据库记录) 3. Controller(控制器)处理输入(写入数据库记录)。
[百度百科]php
MVC的流程图以下(来源百度百科):
html
采用模板引擎使得数据和显示分离,这种方式更易于维护。前端
<!DOCTYPE html>
这种方式每每随着前端逻辑的复杂度变得愈来愈大,代码的可读性也会变得不好,代码的可重用性也很差。(好比咱们须要重复的编写从数据库中获取数据的代码)git
该机制主要是执行数据库操做的代码get_data.php单独放到一个文件中,显示的hmtl代码show_page.php放到另外一个文件中,而后在html代码show_page.php中包含执行数据库操做的代码get_data.php.代码以下:github
<?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(); ?>
<!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语法等高级功能也不容易实现。web
该机制与上一个机制恰好相反,在负责数据操做的文件中包含模板,模板只负责显示便可,不用考虑php操做。
本引擎的执行流程以下:
正则表达式
因为代码有点长,因此放在github上,O(∩_∩)O~,代码比较简单,能够加深咱们对模板引擎的理解,smarty等更复杂,但基本原理差很少就是这样。
具体代码连接以下:https://www.github.com/fengyuhetao/Code.git,该目录Template Engine中就是简易的模板引擎代码。sql