PHP之路 WEB【第三篇】smarty模板引擎剖析
模板引擎的工作原理
如何实现HTML代码和PHP代码分离
实现HTML代码和PHP代码分离的目的是:实现前端设计人员和PHP程序员的分离。 多数Web开发人员要么是精通网页设计,能够设计出漂亮的网页外观,但是编写的PHP代码很糟糕;要么仅熟悉PHP编程,能够写出健壮的PHP代码,但是设计的网页外观很难看。具备两种才能的开发人员很少见。 将PHP和HTML混合页面,分成两个独立的页面: 一个是HTML静态页面(视图文件、模板文件),扩展名是.html,包含HTML、CSS、JS 一个是纯PHP程序页面(控制器文件),扩展名是.php,主要PHP代码。 运行时,将HTML文件代码,包含到PHP文件中。
HTML和PHP分离
HTML和PHP简单分离
<?php //(1)数据库配置信息 $db_host = "localhost"; //主机名 localhost:3306 $db_port = "3306"; //端口号 $db_user = "root"; //用户名 $db_pass = "root"; //密码 $db_name = "mingren"; //数据库名 $charset = "utf8"; //字符集 //(2)PHP连接MySQL服务器 if(!$link = @mysqli_connect($db_host.":".$db_port,$db_user,$db_pass)) { echo "<h2>PHP连接MySQL服务器失败!</h2>"; echo "系统错误信息:".mysqli_connect_error(); die(); //中止程序向下运行 } //(3)选择当前数据库 if(!mysqli_select_db($link,$db_name)) { echo "<h2>选择数据库{$db_name}失败!</h2>"; die(); } //(4)设置数据库返回数据字符集 mysqli_set_charset($link,$charset);
<?php //包含连接数据库的公共文件 require_once("./conn.php"); //执行查询的SQL语句 $sql = "SELECT * FROM student ORDER BY id DESC"; $result = mysqli_query($link,$sql); //获取所有行数据 $arrs = mysqli_fetch_all($result,MYSQLI_ASSOC); //获取学生人数 $records = mysqli_num_rows($result); //包含视图文件 include "./view.html";
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>学生信息管理中心</title> <script type="text/javascript"> //定义一个JS的提示函数 function confirmDel(id) { //询问是否要删除? if(window.confirm("你真的要删除吗?")) { //如果单击"确定"按钮,跳转到delete.php页面 location.href = "./delete.php?id="+id; } } </script> </head> <body> <div style="text-align:center;padding-bottom: 10px;"> <h2>学生信息管理中心</h2> <a href="./add.php">添加学生</a> 共有<font color=red><?php echo $records?></font>个学生信息 </div> <table width="600" border="1" align="center" rules="all" cellpadding="5"> <tr bgcolor='#ccc'> <th>编号</th> <th>姓名</th> <th>性别</th> <th>年龄</th> <th>学历</th> <th>工资</th> <th>奖金</th> <th>籍贯</th> <th>操作选项</th> </tr> <?php //循环二维数组 foreach($arrs as $arr){ ?> <tr align="center"> <td><?php echo $arr['id']?></td> <td><?php echo $arr['name']?></td> <td><?php echo $arr['sex']?></td> <td><?php echo $arr['age']?></td> <td><?php echo $arr['edu']?></td> <td><?php echo $arr['salary']?></td> <td><?php echo $arr['bonus']?></td> <td><?php echo $arr['city']?></td> <td> <a href="">修改</a> | <a href="#" onClick="confirmDel(<?php echo $arr['id']?>)">删除</a> </td> </tr> <?php }?> </table> </body> </html>
HTML和PHP完全分离
方法:完全去除视图文件中的PHP标记
<?php //定义两个变量 $name = "张三丰"; $age = 25; //读取视图文件代码 $str = file_get_contents("./view.html"); //替换PHP标记为"{"或"}" $str = str_replace('{','<?php echo ',$str); $str = str_replace('}','?>',$str); //将替换完成的字符串,再写入view.html file_put_contents("view.html",$str); //包含视图文件 include "./view.html";
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>HTML代码和PHP代码完全分离</title> </head> <body> 姓名:<?php echo $name?><br> 年龄:<?php echo $age?>
常用PHP模板引擎介绍
Smarty,是模板引擎鼻祖。其它的模板引擎都是基于Smarty开发的。 Template Lite TinyButStrong XTemplate Savant phemplate Dwoo Sugar Twig,symfony框架默认的模板引擎; FXL Template H2o ns-template Blade:laravel框架默认的模板引擎。
Smarty快速入门
Smarty是什么
Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。
第一个Smarty程序
<?php //包含Smarty类文件 require_once("./Smarty/libs/Smarty.class.php"); //创建Smarty类的对象 $smarty = new Smarty(); //向视图赋值 $smarty->assign("name","张三丰"); $smarty->assign("age",24); //显示视图文件 $smarty->display("./view.html");
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Smarty模板引擎</title> </head> <body> 姓名:{$name}<br> 年龄:{$age}
谢谢