- 浏览: 1779291 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (641)
- vb2005xu自己动手系列 (174)
- vb2005xu开发文章转摘 (47)
- vb2005xu发发牢骚 (99)
- vb2005xu新技术灌水 (12)
- vb2005xu网络资源集锦 (21)
- vb2005xu软件学习 (60)
- 英语学习 (3)
- JavaScript 学习 (54)
- JAVA OOP 巩固 之 CustomDatabase 的开发 (5)
- 2013年9月之前所在公司 记事 (7)
- FleaPHP/QEEPHP 资料 (87)
- JAVA MAIL 学习篇 (4)
- Python turbogears (5)
- Rails 个人开发四部曲 (3)
- 名人传 (8)
- iwp framework (5)
- 高考零分作文 (5)
- startos (8)
- lua (0)
- 职场 (1)
最新评论
-
hellotieye:
自己 评论 自己 挺嗨呀
Mysql sql查询时 if 的用法 -
igevin:
转载请标明出处,转自Gevin的博客http://blog.i ...
RESTful API 编写指南 -
Theobob:
...
实现简单的ACL -
vb2005xu:
比如 对于 curl 调用就不再需要 加各种if 判断了,
$ ...
搞一个简单的数据打印工具AsDebug の Laravel -
vb2005xu:
http://geekplux.com/wiki/
YII2 模块内自定义错误页
我赞同作者对smarty的见解,对作者的实现持保持态度
我认为我当前使用的模版类比smarty好很多
<?php /** * 视图层 */ class qeeplay_mvc_ViewLayer { /** * 该层所属的视图对象 * * @var qeeplay_mvc_View */ public $view; /** * 父层对象 * * @var viewlayer */ public $parent; /** * 视图名称 * * @var string */ public $viewname; /** * 该层的内容 * * @var string */ public $contents; /** * 该层区块的内容 * * @var array */ public $blocks = array(); /** * 该层的区块 * * @var array */ private $_block_stack = array(); /** * 预定义的区块 * * @var array */ private $_predefined_blocks = array(); /** * 构造函数 * * @param qeeplay_mvc_View $view * @param string $viewname */ function __construct(qeeplay_mvc_View $view, $viewname) { $this->view = $view; $this->viewname = $viewname; } /** * 返回该层的顶级层(最底层的视图) * * @return qeeplay_mvc_viewlayer */ function root() { return ($this->parent) ? $this->parent->root() : $this; } /** * 分析视图,并返回结果 * * @param array $predefined_blocks */ function parse(array $predefined_blocks = array()) { $this->_predefined_blocks = $predefined_blocks; ob_start(); extract($this->view->vars); include $this->view->view_filename($this->viewname); $this->contents = ob_get_clean(); $this->_predefined_blocks = null; foreach ($this->blocks as $block_name => $contents) { $search = "%_view_block.{$block_name}_%"; if (strpos($this->contents, $search) !== false) { $this->contents = str_replace($search, $contents, $this->contents); } } } /** * 从指定层继承 * * @param string $viewname */ function extend($viewname) { $this->parent = new qeeplay_mvc_ViewLayer($this->view, $viewname); } /** * 定义一个区块 * * @param string $block_name * @param boolean $append */ function block($block_name, $append = false) { array_push($this->_block_stack, array($block_name, $append)); ob_start(); } /** * 结束最后定义的一个区块 */ function endblock() { list($block_name, $append) = array_pop($this->_block_stack); $contents = ob_get_clean(); $this->_create_block($contents, $block_name, $append); } /** * 定义一个空区块 * * @param string $block_name * @param boolean $append */ function empty_block($block_name, $append = false) { $this->_create_block('', $block_name, $append); } /** * 载入一个视图片段 * * @param string $viewname 视图片段名 */ function element($viewname) { $__filename = $this->view->view_filename("_elements/{$viewname}"); extract($this->view->vars); include $__filename; } /** * 完成一个区块 * * @param string $contents * @param string $block_name * @param boolean $append */ private function _create_block($contents, $block_name, $append) { if (isset($this->_predefined_blocks[$block_name])) { if ($append) { $contents .= $this->_predefined_blocks[$block_name]; } else { $contents = $this->_predefined_blocks[$block_name]; } } $this->blocks[$block_name] = $contents; echo "%_view_block.{$block_name}_%"; } }
http://down.chinaz.com/test/201203/1741_1.htm 写道
在PHP界谈模板引擎,必不可免的要拿Smarty开刀,这个无比傻帽的却又带有一点点官方色彩的模板引擎。
如果没有我这样人富有正义感又富有创新精神的热血青年站出来,不知道它还要继续毒害多少那些处于花季而又对PHP充满美丽幻想的少年。
1.语法
你真的认为美工学得了 {foreach key=key item=item from=$contact} 这样的语法
却学不了 <?php foreach ($contact as $key=>$item) { ?> 吗?
而 {if $name eq "Fred" or $name eq "Wilma"}
又比<?php if ($name=='Fred' or $name=='Wilma') { ?> 优秀到哪里去?
首先我对美工会学Smarty语法始终保持怀疑态度,至少我工作这么多年还没遇到过一个会Smarty语法的,而就算美工愿意学,你又为何不教他正宗的PHP语法,却要教他一门连你自己搞不清楚的“Smarty语言”。
2.可视化
当页面从美工交接到你手上,然后你给那些完美的网页,套上那恶心的Smarty代码,然后在Dreamweaver里,你是否认真的看过那些页面已经变得何等的丑陋,图片还看得见吗?CSS还在吗?更不用说include了。而要修改的时候呢?你还能一眼认出来吗?
这些都解决不了,那些所谓的模板引擎又怎么配得上“强大”二字?
3....
多的我就不说了,这里只是拿Smarty举个例子,应该不难发现,其它模板引擎也大同小异,都忙着发明自己的模板语言,而真正需要解决的问题则避而不谈。
现在你是否明白了,所谓的模板引擎,所谓的强大,都TMD骗子。
在夜深人静的夜里,我曾无数次的醒来,感觉自己的担子又重了一些,只因为不能够将这个残忍的事实告诉你。
如果没有我这样人富有正义感又富有创新精神的热血青年站出来,不知道它还要继续毒害多少那些处于花季而又对PHP充满美丽幻想的少年。
1.语法
你真的认为美工学得了 {foreach key=key item=item from=$contact} 这样的语法
却学不了 <?php foreach ($contact as $key=>$item) { ?> 吗?
而 {if $name eq "Fred" or $name eq "Wilma"}
又比<?php if ($name=='Fred' or $name=='Wilma') { ?> 优秀到哪里去?
首先我对美工会学Smarty语法始终保持怀疑态度,至少我工作这么多年还没遇到过一个会Smarty语法的,而就算美工愿意学,你又为何不教他正宗的PHP语法,却要教他一门连你自己搞不清楚的“Smarty语言”。
2.可视化
当页面从美工交接到你手上,然后你给那些完美的网页,套上那恶心的Smarty代码,然后在Dreamweaver里,你是否认真的看过那些页面已经变得何等的丑陋,图片还看得见吗?CSS还在吗?更不用说include了。而要修改的时候呢?你还能一眼认出来吗?
这些都解决不了,那些所谓的模板引擎又怎么配得上“强大”二字?
3....
多的我就不说了,这里只是拿Smarty举个例子,应该不难发现,其它模板引擎也大同小异,都忙着发明自己的模板语言,而真正需要解决的问题则避而不谈。
现在你是否明白了,所谓的模板引擎,所谓的强大,都TMD骗子。
在夜深人静的夜里,我曾无数次的醒来,感觉自己的担子又重了一些,只因为不能够将这个残忍的事实告诉你。
发表评论
-
RESTful API 编写指南
2016-06-14 11:12 5182基于一些不错的RESTful ... -
谈冷热数据
2015-07-20 11:13 6156http://jishu.zol.com.cn/11379. ... -
贺岁文:部门正副经理之争
2015-01-29 11:57 1179http://blog.csdn.net/shenyisyn ... -
只能通过chrome网上应用商店安装该程序”的解决方法
2014-10-09 13:09 6146自 Chrome 21.x 开始默认只允许从 Chrome ... -
nginx同一iP多域名配置方法
2014-06-03 13:48 2689nginx绑定多个域名可又把多个域名规则写一个配置文件里,也 ... -
风车网陈晓峰回忆录:我的两个月倒闭史
2014-05-27 16:09 1338http://tech2ipo.com/54719 ... -
Debugging and Profiling PHP with Xdebug
2014-04-15 12:10 1738http://www.sitepoint.com/debug ... -
XHProf 中文文档
2014-04-15 11:26 1459XHProf文件(草稿) 翻译:徐 ... -
让普通用户登录phpmyadmin不显示information_schema
2014-02-13 16:54 1910http://www.cnblogs.com/faily20 ... -
apache2.2+svn1.6+TortoiseSVN在windows环境搭建
2013-12-21 21:58 4466今天空闲时间对SVN服务器端和客户端环境做了搭建,并且成功了 ... -
MiniCMS - 吐槽
2013-10-22 10:58 1446看到的深有感触, ... -
MySQL 数据库通过日志恢复
2013-08-14 17:09 1088http://blog.csdn.net/hanxin198 ... -
使用文件函数操作Memcache
2013-08-12 18:21 1522写道 最近一周,SAE又悄悄的上线了一个新功能.那就是开始 ... -
转 总结过去10年
2013-08-10 11:17 1121下面的好文 担心原作者删帖 转到此处吧 http:/ ... -
SAET SQL_CALC_FOUND_ROWS 问题
2013-07-20 14:22 2308上午遇到 应用数据查不到的问题,但是 数据库中明明 ... -
问一下使用struts的同学们,你们这些年,是怎么过来的?
2013-07-20 12:04 1370by 空虚浪子心 http://www.inbreak.ne ... -
杂谈产品灰度上线的研发模式
2013-05-13 13:45 1760写道 传统的产品研发 ... -
正则表达式口诀
2013-04-12 14:38 1464写道 来源:蓝血正则 ... -
Emacs 快速指南
2013-04-09 17:51 2327您正在阅读 Emacs 快速指南(Emacs tutorial ... -
推荐几个技术博客,持续更新中...
2013-03-18 10:07 3305推荐几个技术博客,我整理了一下googlereader的订 ...
相关推荐
这个"smarty3中文手册"是针对Smarty3框架的详细文档,提供了全面的指南、教程和API参考,帮助开发者更好地理解和使用该模板引擎。 Smarty3的主要特性包括: 1. **模板和PHP分离**:Smarty3通过使用特殊的语法,如`...
这个“Smarty完全中文手册”是一个详尽的资源,旨在帮助用户深入理解和有效利用Smarty框架。 Smarty的核心概念在于其模板系统,它允许设计师使用简单的HTML语法来创建页面布局,然后通过变量和控制结构将动态数据...
Smarty的核心理念是"分离视图(模板)和控制器(逻辑)",这是一种常见的MVC(Model-View-Controller)设计模式的应用。 Smarty-2.6.18.tar.gz 是Smarty的一个特定版本,即2.6.18版的源码压缩包。.tar.gz格式是一种...
这篇文档将详细介绍Smarty3.0的关键概念和功能。 1. **Smarty模板引擎基础** Smarty的核心理念是让HTML模板和PHP代码分离,通过变量赋值和控制结构来实现动态内容渲染。在Smarty3.0中,你可以定义模板文件,其中...
#### 一、Smarty简介 - **定义**:Smarty是一种用PHP编写的模板引擎,其核心理念在于实现逻辑与外观的分离,从而让前端设计师与后端开发者能够独立工作,减少开发周期,提高效率。 - **应用场景**:适合大型项目或...
Smarty是一个流行的、强大的、可扩展的模板引擎,它将应用程序的逻辑与表现层分离,使设计师和程序员能够更有效地协作。手册详细介绍了如何使用Smarty来构建高效的Web应用,并提供了丰富的示例和解释。 Smarty ...
Smarty3 中文手册是这个模板引擎的官方文档的中文版本,对于学习和使用Smarty3的中文用户来说,是一份极其重要的参考资料。 Smarty3 的核心理念在于提供一种方式,让程序员编写PHP代码,而设计师可以使用HTML和简单...
3. 缓存技术:Smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来...
Smarty是一款广泛应用于PHP开发中的模板引擎,它的设计目标是将表现层(HTML)与业务逻辑层(PHP)分离,使得开发者可以更专注于后端逻辑,而设计师则可以自由地使用HTML来设计页面,无需关心PHP代码。这个"Smarty...
Smarty是一个流行的PHP模板引擎,它的出现使得Web开发者可以将HTML设计和PHP代码分离,从而让网站的维护和更新变得更加高效和便捷。这个压缩包包含了三本关于Smarty的详细手册,分别是Smarty完全中文手册、smarty_...
Smarty是一款广泛使用的PHP模板引擎,它允许开发者将HTML和PHP代码分离,使网站设计与后端编程更加清晰、独立。在使用Smarty时,有时我们可能会遇到“truncate”修饰符处理中文字符串时出现乱码的问题。这通常是由于...
为了更好地学习和使用Smarty,你可以参考压缩包中的"smarty中文手册.chm"文件。这个手册详细介绍了Smarty的安装、配置、基本用法以及高级特性。同时,"脚本之家下载说明_jb51.net.txt"可能包含了一些关于如何在脚本...
本手册是Smarty的中文使用指南,旨在帮助中文用户更好地理解和应用Smarty框架。 1. **Smarty简介** Smarty是一个基于PHP的模板系统,它引入了MVC(Model-View-Controller)设计模式,允许开发者将PHP代码和HTML...
就是smarty介绍
此外,Smarty还提供了一系列内置函数,如`{function name=arg1 arg2}`,用于格式化数据、处理字符串、操作数组等。 3. **模板继承**:通过使用`{extends}`指令,一个模板可以继承另一个模板的基础结构,只覆盖特定...
Smarty是一个流行的PHP模板引擎,它的设计目标是将HTML模板与PHP代码分离,使得网页设计师可以专注于页面布局,而程序员则可以处理业务逻辑和数据处理。这个"Smarty中文手册 双语版"为开发者提供了详尽的参考信息,...
Smarty是一个流行的PHP模板引擎,它的主要目标是将呈现逻辑与应用程序的业务逻辑分离,从而让开发者专注于编写PHP代码,而设计师则可以独立地工作在HTML模板上。这个"Smarty中文开发手册"是针对PHP开发者的一份重要...
### Smarty中文手册与教程知识点详解 #### 一、Smarty简介 **Smarty** 是一款用于 PHP 的模板引擎,...通过本文介绍的知识点,希望能够帮助读者更好地理解和掌握 Smarty 的使用方法,为自己的项目带来更多的可能性。
Smarty是一款广泛应用于PHP开发中的模板引擎,它将呈现逻辑与业务逻辑分离,使得网页设计人员和程序员能够更好地协同工作。这个“Smarty完全中文手册 CHM”是一个帮助文档,旨在为PHP开发者提供关于Smarty的详尽指导...