仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1615|回复: 20
打印 上一主题 下一主题

[学习教程] PHP教程之十分复杂的php模版类--DarasionTemplat...

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:56:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
可以说你的马步已经扎的差不多了,接下来就要开始练把势的时候了,如果有条件的话,用笔或者打印一个简易的PHP手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。   哈,很久不写blog了,明天就随意写点吧,怎样这blog的编纂器成了FCK的了呢?

突发灵感,写了一个十分复杂的模版类,固然没啥先辈的器材,不外我总以为灵感也是需求堆集的。
功到天然成嘛。模版类文件代码:
<?php
/**
* 作者:darasion
* 版权:利用或转载注明作者
*
*/
class DarasionTemplate{
var $template   = "";
var $VAR        = array();
var $className  = "DarasionTemplate";
/**
* 设定 参数/模版
*
*/
function setVar($name,$value){
  if(strtolower(get_class($value))==strtolower($this->className)){
   $this->VAR[$name]=$value->parse();
  }else{
   $this->VAR[$name]=$value;
  }
}
/**
* 取得 参数/解析后的模版
*
*/
function getVar($name){
  if(isset($this->VAR[$name])){
   return $this->VAR[$name];
  }
}
/**
* 设定模版途径
*
*/
function setTemplate($tpl){
  $this->template = $tpl;
}
/**
* 输入html
*
*/
function out(){
  echo $this->parse();
}
/**
* 解析模版
*
*/
function parse(){
  ob_start();
  include_once($this->template);
  echo $content=ob_get_contents();
  ob_end_clean();
  return $content;
}
}
?>

这个模版类可以撑持模版的嵌套,只需将子模版类的实例看成参数设置给父模版便可
利用办法:

test.php
<?php
include("DarasionTemplate.php");

//创立父模版
$tpl=new DarasionTemplate();
$tpl->setTemplate("inc/__tpl.php");
//父模版参数
$tpl->setVar("title","参数title");
$tpl->setVar("a","参数a");
$tpl->setVar("b","参数b");

//创立子模版
$tpl1=new DarasionTemplate();
$tpl1->setTemplate("inc/__tpl1.php");
//设置子模版参数
$tpl1->setVar("kk","kk");

//将子模版放入父模版中
$tpl->setVar("c",$tpl1);

$tpl->out();

?>


//父模版:__tpl.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title><?php echo @$this->getVar("title");?></title>
</head>

<body>
<?php echo @$this->getVar("a");?>
<?php echo @$this->getVar("b");?>
<?php echo @$this->getVar("c");?>
</body>
</html>

//子模版:__tpl1.php

<table width="200" border="1" bordercolor="#000000">
  <tr>
    <td><?php echo @$this->getVar("kk");?></td>
    <td><?php echo @$this->getVar("kk");?></td>
    <td><?php echo @$this->getVar("kk");?></td>
  </tr>
</table>

输入的html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>参数title</title>
</head>

<body>
参数a 参数b
<table width="200" border="1" bordercolor="#000000">
  <tr>
    <td>kk</td>
    <td>kk</td>
    <td>kk</td>
  </tr>
</table>
</body>
</html>
在这个模版类中,利用了与其他模版类分歧的办法来完成:
1、把其他模版类中的相似{a}的换成了<?php echo @$this->getVar("a");?>并且子模版和父模版中他们的模式不异。
2、假如需求轮回,只需求写php的轮回代码便可,如:foreach()。
如许做的优点是:
1、省去了字符串的交换进程(一大堆的正则老是看不懂,呵呵,给本人想了个偷懒的举措)。
2、省去了从头进修一大堆说是标签还不是标签的器材的进程(仍是由于本人懒)。
3、更主要的优点是,用这个模版类对应的模版,是完整可以用Dreamweaver等东西停止可视化编纂的。
因为是一时髦起写成的器材,一定经不起细心的斟酌,只是给人人提出一个设法,供人人会商;假如真的能在实践中对你有所匡助,天然更好了。
学校并没有那么多的时间可以让我们在实际开发上面。
活着的死人 该用户已被删除
22#
发表于 2015-5-12 05:52:40 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
若天明 该用户已被删除
21#
发表于 2015-5-6 10:10:43 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
飘灵儿 该用户已被删除
20#
发表于 2015-4-26 22:39:22 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
再现理想 该用户已被删除
19#
发表于 2015-4-22 06:01:09 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
飘飘悠悠 该用户已被删除
18#
发表于 2015-4-21 15:13:21 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
第二个灵魂 该用户已被删除
17#
发表于 2015-4-21 06:29:56 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
愤怒的大鸟 该用户已被删除
16#
发表于 2015-4-17 11:51:03 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
精灵巫婆 该用户已被删除
15#
发表于 2015-4-13 23:54:34 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
冷月葬花魂 该用户已被删除
14#
发表于 2015-4-1 23:08:39 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
admin 该用户已被删除
13#
发表于 2015-3-28 10:40:34 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
透明 该用户已被删除
12#
发表于 2015-3-27 16:10:42 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
谁可相欹 该用户已被删除
11#
发表于 2015-3-22 20:13:50 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
蒙在股里 该用户已被删除
10#
发表于 2015-3-22 14:44:25 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
柔情似水 该用户已被删除
9#
发表于 2015-3-18 03:50:36 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
金色的骷髅 该用户已被删除
8#
发表于 2015-3-11 10:01:53 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
只想知道 该用户已被删除
7#
发表于 2015-3-9 20:22:34 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
不帅 该用户已被删除
6#
发表于 2015-3-1 10:27:41 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
5#
发表于 2015-2-10 12:11:18 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
变相怪杰 该用户已被删除
地板
发表于 2015-2-9 21:00:22 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-20 23:35

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表