---------------------------------------
看出什么区别没有?就我来说没什么大的变化,我想,这样的代码对于单纯前台网页设计者来说,也是非常难以应用的,更何况是学习那么多的模板语法呢?接下来看看它的编译后代码:
---------------------------------------                <!-- 最新动态更新部分开始 //-->
                <table width="245" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                        <td align="center"><img src="<?php echo @constant('IMAGE_DIR'); ?>
main_news.gif" alt="" width="239" height="13" /></td>
                    </tr>
                    <tr>
                        <td style="height:10px;"></td>
                    </tr>
                    <tr>
                        <td align="left">
                        <ul>
<?php if (isset($this->_sections['num'])) unset($this->_sections['num']);
$this->_sections['num']['name'] = 'num';
$this->_sections['num']['loop'] = is_array($_loop=$this->_tpl_vars['news']) ? count($_loop) : max(0, (int)$_loop); unset($_loop);
$this->_sections['num']['show'] = true;
$this->_sections['num']['max'] = $this->_sections['num']['loop'];
$this->_sections['num']['step'] = 1;
$this->_sections['num']['start'] = $this->_sections['num']['step'] > 0 ? 0 : $this->_sections['num']['loop']-1;
if ($this->_sections['num']['show']) {
    $this->_sections['num']['total'] = $this->_sections['num']['loop'];
    if ($this->_sections['num']['total'] == 0)
        $this->_sections['num']['show'] = false;
} else
    $this->_sections['num']['total'] = 0;
if ($this->_sections['num']['show']):            for ($this->_sections['num']['index'] = $this->_sections['num']['start'], $this->_sections['num']['iteration'] = 1;
                 $this->_sections['num']['iteration'] <= $this->_sections['num']['total'];
                 $this->_sections['num']['index'] += $this->_sections['num']['step'], $this->_sections['num']['iteration']++):
$this->_sections['num']['rownum'] = $this->_sections['num']['iteration'];
$this->_sections['num']['index_prev'] = $this->_sections['num']['index'] - $this->_sections['num']['step'];
$this->_sections['num']['index_next'] = $this->_sections['num']['index'] + $this->_sections['num']['step'];
$this->_sections['num']['first']      = ($this->_sections['num']['iteration'] == 1);
$this->_sections['num']['last']       = ($this->_sections['num']['iteration'] == $this->_sections['num']['total']);
?>
                            <li><a href="<?php echo @constant('MAIN_PAGE'); ?>
?page=news&amp;id=<?php echo $this->_tpl_vars['news'][$this->_sections['num']['index']]['0']; ?>
"><?php echo $this->_tpl_vars['news'][$this->_sections['num']['index']]['1']; ?>
</a><br /><span style="font-size:9px; color:#BBBBBB;"><?php echo $this->_tpl_vars['news'][$this->_sections['num']['index']]['3']; ?>
 | View Num : <?php echo $this->_tpl_vars['news'][$this->_sections['num']['index']]['2']; ?>
</span></li>
<?php endfor; endif; ?>
                        </ul></td>
                    </tr>
                    <tr>
                        <td align="left" valign="top" style="height:20px; border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#3D658C; "><a href="<?php echo @constant('MAIN_PAGE'); ?>
?page=news"><img src="<?php echo @constant('IMAGE_DIR'); ?>
more.gif" alt="##LANG_MORENEWS##" width="33" height="8" /></a></td>
                    </tr>
                </table>
                <!-- 最新动态更新部分结束 //-->---------------------------------------

解决方案 »

  1.   

    和最上面的单纯的 HTML&PHP 代码对比起来,恐怕单纯的 HTML&PHP 代码根容易理解,更清晰一些是么?从代码的复杂程度来说呢?不言而喻了.如果单纯这方面来说,给我一个使用模板的里有吧.........希望讨论一下
    只是Smarty不单单如此,呵呵,所以最终我是用它,重要的是它的cache功能,生成的是单纯的HTML代码,而且能够对不同页面生成不能的缓存文件,设置缓存过期时间等,非常方便,呵呵,发现缓存后速度确是快了不少.......难道模板的作用只在此?那为什么还要前面的编译部分呢?
    OK,模板引擎我只说到这里,再说数据库提取层的问题.....我试用了一下 PEAR::DB ,恩,P4的机器,单纯 require_once 的时间平均是60-80 ms,也就是说,即使没有数据库查询的页面,只要载入该文件,至少花费近100ms的时间,这样的资源浪费该如何解决?我没有想到该如何选择这个提取层,DBX?官方传说中的PDO.都没有测试过,不若前者默认是不支持的,需要自己载入模块.....速度应该不错的吧,但是从PEAR::DB来看,还是有点担心这个提取层如何选择.几年来的优化,还是这样的效率?从一个getOne方法来看,返回的信息两竟然如此之大,但是你到底需要这里的多少信息呢?至于好处我就不说了,呵呵
      

  2.   

    有两个网站拥有500个页面的网站,一个是用HTML&PHP实现的,一个用模板技术实现的。
    现在让你从中间选一个进行管理,你选哪个???
    -----------------------------------------------------------------------------
    其实我觉得上面的两个问题的,其实是一个问题:“要速度,还是要可维护性”,关键还是看你要做什么了。要是子做一个留言板,这两项技术当然是大材小用,而且只有傻子才这么做,但是你要是开发OA,MIS,大型的网站,这种技术倒是应该优先考虑的。
    --------------------------------------------------------------------------
    大家用PHP的一个很大的理由可能是因为它简单,开发周期短。做一些简单的东西,这当然不可否认。但是要是做起复杂的东西来,我就不敢苟同了,就像搂主说的,这些技术整合起来,其实效率和速度并不一定能比JSP快和简单。近来做项目用PHP采用了MVC模式,整个设计搞下来,觉得挺麻烦的,同样的程序,要使用JSP/STRUCT技术来实现绝对比PHP快,至少开发速度就快多了,因为用JBUILDER实现起来很简单的。但是PHP就可怜了,没有现成的开发工具给你用,只能靠记事本打天下了。---------------------------------------------------------------------------
    我现在开发用的类库有PEAR/ADODB/SIMPLETEST/nusoap 其他的东西我都尽量自己写,
    但使用的时间长了,觉得一直用这些东西,对速度的影响实在是太大了,所以自己也有些想法,觉得应该对有些好处。我个人觉得网上这些类库尤其是pear, 实在是华而不实,首先里面的pear基础类本身就是一个挺庞大的类了,而pear包的其他类都是从他继承的,所以初始化的数度当然可想而知了。况且很多用pear的人,把自己的所有类都从上面继承,这样运行的速度实际视听恐怖的。看看pear的基础类里到底都是什么东西吧!他就是实现了"一个全局的错误跟踪"和"一个类似java的System.gc()调用finalize()函数的功能"。其实我们用到的只是其中的很少的一部分的功能,那我们为什么还要用它呢,完全可以自己写个简单基础类来代替它,而且不难。为什么不呢?对我个人来说,我自己写的简单基础类(不难的情况下)完全可以盛任,就算他pear再完美我也不用。对于使用模板技术来说,我个人觉得挺不错的,但我觉得向Smarty等模板工具,提供的一些方法其实是没什么太大的意义的,只用它的一般的解析功能就够了。至少我个人是这么认为的,他们的那么模式太固定,还是一样不适合一些大的项目。就拿缓存来说,它的解决方案不是很好,如果让你现在用php开发csdn.net,它的缓存的方式绝对不胜任。一个完美的通用缓存方案,还是要看自己的编程习惯和代码实现方式自己设计好(有时候iframe在这方面能发挥很大的作用,不可不考虑到他,例如实现类是csdn的帖子内容页面的缓存)。----------------------------------------------------------------------------
    总的来说,我觉得网上这些优秀的类库,的确是好东西,但要活用他们,他们之所以好用,是因为他们的实现思路好,
      

  3.   

    没有分就没有人愿意讨论,真悲哀,嘿嘿....还不如 PHPE楼上的接分了~~~
      

  4.   

    我也觉得smarty有点过于庞大和复杂。但是如果从软件工程的角度看我想这些好象又是不可缺少的。自己有个想法,把Smarty简化以后使用。
      

  5.   

    countstars (深空) 
    hahawen(变态的大龄青年, 越来越变态,咋办啊) 两位说的不错,其实你们说的也正是我想说的,可是我的文档能力有限,
    写不出来啊,呵呵!正好你们说了,多谢!
      

  6.   

    我开发小东东,不过只用phplib中的template.inc感觉还行,没有考虑那么多。
    不过看了此帖受益菲浅。
      

  7.   

    其实这与php的最初定位是有关系的。
    1、php是开源的,并无商业利益可言
    2、最初的php以起简洁易用、跨平台、免费的特点确实要优于当时普遍使用的asp、perl
    3、由于是跨平台和开源的,所以不大可能内嵌与操作系统有关的和专利技术。导致php从一开始就是平民化的,适合与小规模开发的语言
    4、就模板和数据库层而言,这从来就是一个以牺牲速度或效率为代价以换取兼容性和易维护性的
    5、如果你有能力,可以将工具包编译成php扩展。这样效率将大大提高
    6、永远不要把php和商业软件对比
      

  8.   

    我感觉ADODB 和SMARTY是不错的东西
    楼上的说 工具包编译成PHP扩展 我想问是什么意思?
      

  9.   

    SMARTY没用过。我倒是觉得PHPLIB小巧玲珑。用的功能也不过是只有那几个。
    所以现在的开发都是用PHPLIB的模板部分。
    数据库抽象层我还是自己写的,虽然垃圾点但是够用。