首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

以小弟我之代码示例驳斥此等评语,看看什么叫模板引擎。

2012-06-02 
以我之代码示例驳斥此等评语,看看什么叫模板引擎。。【既然知道评价中肯,就应该明白差距在哪里了吧,每次运行

以我之代码示例驳斥此等评语,看看什么叫模板引擎。。
【既然知道评价中肯,就应该明白差距在哪里了吧,每次运行都进行替换,相当程度上降低了系统性能,这样的模板引擎还有什么优势??】
【的确是有差距的,我看了一下,按照你说的一年多了,你已经累计有5次下载,和1毛钱的运营盈利。跟他这个只是会发个帖子,贴些代码,又没人下载,又没盈利的情况,差距实在太大了。】


PHP code
<?phpclass IndexAction extends YouYaX{        public function index()        {            header("Content-type: text/html; charset=utf-8");            $this->assign("csdn","csdner,大家中午好")                     ->assign("head",array("来自","xxx"))                 ->assign("greet",array("<h2>PHP技术</h2>","基础编程","开放资源","framework"))                 ->assign("foot",array(                                                                 array("id"=>'1',"foot"=>"这是底部测试1"),                                                                 array("id"=>'2',"foot"=>"这是底部测试2"),                                                                 array("id"=>'3',"foot"=>"这是底部测试3")                                                             ))                 ->assign("bye","88,good bye");            $this->display("index.html");         }}?>



HTML code
<html>    <head>        <title>welcome YouYaX</title>    </head>    <body>    <center>            <table width="400" >        <!--  普通替换 -->        <tr>            <td>{csdn}</td>        </tr>        <!--  一维数组替换 -->        <tr>            <td><loop> {head} ———— </loop> 发表在【{greet->1}】</td>        </tr>        </tr>        <!--  一维数组替换 -->         <loop>             <tr><td>{greet}</td></tr>         </loop>        </table>        <hr>        <!--  二维数组替换 -->        <list>            <h3>                {foot.foot}            </h3>        </list>        <!--  普通替换 -->        {bye}        <hr>        比较测试 , 让我们在html中使用PHP吧 , 模板变量上要写上双引号 <br>        <?php         if( "{bye}"=="88,good bye" ){                 echo "<font color=red>看吧 , 果然正确吧, 测试结束,测试者:{head->1}</font>";         }else{                 echo "错了";            }        ?>    </center>    </body></html>






[解决办法]
你晒的不是模板引擎啊
[解决办法]
那么你的模板引擎做了什么呢
PHP code
            //——普通替换            //单个输出数组值        //    var_dump($this->array_array);exit;            $return=preg_match_all('/\{[^{]*->[^{}]*}/',$txt,$single);            if($return){            foreach($single[0] as $v){                $x=strlen($v);                $y=$x-2;                $z=substr($v,1,$y);  //title->0                $z1 = preg_split('/->/', $z, -1, PREG_SPLIT_NO_EMPTY);                $txt=str_replace($v,$this->array_array[$z1[0]][$z1[1]],$txt);            }        }            //数组替换            $return=preg_match_all("/<\s*loop\s*>\s*(.+?)\s*<\s*\/loop\s*>/s",$txt,$match);            if($return){            try{                foreach($match[1] as $lv){                    if(eregi("<\s*loop\s*>",$lv)){                         throw new Exception(htmlspecialchars("<loop>标签不能嵌套<loop>!"),"304");                         break;                    }                }            }catch(Exception $e){                $this->exception($e);            }            $result0=$match[0];   //<loop><tr><td>{array}</td></tr></loop> 系列数组    <loop>{array2}</loop>                $result1=$match[1];   //<tr><td>{array}</td></tr>    系列数组{array2}            //var_dump($result1);exit;            foreach($result1 as $r1){            preg_match_all("/\{(.*)\}/",$r1,$match2);            $result2=$match2[0][0];//{array}            $result3=$match2[1][0];//array            $result4=$this->array_array[$result3];//得到的数组            try{                if(!is_array($result4))                     throw new Exception(htmlspecialchars("<loop>标签解析出错,仅支持一维数组!"),"306");                        /*                if(empty($result4))                     throw new Exception(htmlspecialchars("<loop>解析一维数组值为空!"),"308");                    */                                }catch(Exception $e){                $this->exception($e);            }            $result5='';        //    unset($result5);   //result5 清零            foreach($result4 as $v){                $result5.=str_replace("{".$result3."}",$v,$r1);                            }            foreach($result0 as $r0){                if(ereg($result2,$r0))                    $txt=str_replace($r0,$result5,$txt);            }        }    }            //--数组替换            //include替换            $return=preg_match_all("/<\s*include\s+file=\"(.*)\"\s*>/",$txt,$inc);            if($return){            $inc1=$inc[0];//<include file="top.html">系列数组            $inc2=$inc[1];//top.html 系列数组            foreach($inc2 as $v){                if(file_exists($v)){                    $sub=file_get_contents($v);                    foreach($inc1 as $v1){                        //区分大小写匹配                        if(ereg($v,$v1)){                            $txt=str_replace($v1,$sub,$txt);                        }                    }                }else{                    exit("include标签解析出错!");                }            }        } 


[解决办法]
个人想法啊,好模版,就是HTML里标签是PHP,
读取后,整个变量$content 用eval后就直接变成了PHP执行了
纯属意淫哈。
[解决办法]
你所反对的模板引擎将把你示例的模板翻译成这样的代码
自己想想,孰是孰非

PHP code
<html>    <head>        <title>welcome YouYaX</title>    </head>    <body>    <center>            <table width="400" >        <!--  普通替换 -->        <tr>            <td><?php echo $csdn</td>        </tr>        <!--  一维数组替换 -->        <tr>            <td><?php foreach($head as $v){ echo $v;}?> ———— <?php }?> 发表在【<?php echo $greet[1] ?>】</td>        </tr>        </tr>        <!--  一维数组替换 -->         <?php foreach($greet as $v) { ?>             <tr><td><?php echo $v ?></td></tr>         <?php } ?>        </table>        <hr>        <!--  二维数组替换 -->        <?php foreach($foot as $v) { ?>            <h3>                <?php echo $v['foot'] ?>            </h3>        <?php } ?>        <!--  普通替换 -->        <?php echo $bye ?>        <hr>        比较测试 , 让我们在html中使用PHP吧 , 模板变量上要写上双引号 <br>        <?php         if( "{bye}"=="88,good bye" ){                 echo "<font color=red>看吧 , 果然正确吧, 测试结束,测试者:{head->1}</font>";         }else{                 echo "错了";            }        ?>    </center>    </body></html> 

热点排行