我在研究别人的php代码的时候看到很多类似于{$total}这种大括号里面加一些变量的东西,不明白是什么东西?是不是这个类似于占位符的意思后来用这个真是的变量来替换的呢?求解答

解决方案 »

  1.   

    这个是PHP中的模板技术,做PHP离不开这个的
      

  2.   

    看看smarty 模板引擎你就知道了这是占位符, 使用php替换成php变量的值
      

  3.   

    这个标签格式你可以自己定义的!{} <{}>都可以!
      

  4.   

    PHP模板高级篇总结如何使用PHP来快速地编写代码,模版似乎成了唯一的选择。但是一个PHPer最终应该坚持使用模版,放弃模版,还是使用自己的模版?    以下想法是属于所有PHPer的想法:    “模板这东西,其实最重要的是适合自己的项目需求,而不是适合自己的习惯.比如一个企业的宣传网站,访问量不大,更新量也不大,用什么都一样,甚至不用,直接PHP+HTML写可能速度最快.也没什么不可.但是如果是一个新闻系统,或者是内容发布系统.两者这样,就非常有必要用到模板这一技术.因为他们都有一个共通的地方,就是有一类页面要用到同一个样式的页面设计.而根据实际情况,比如访问量的大小,项目的紧急程度以及程序员对于模板技术的熟练程度,选择最适合项目的模板技术..这才是首选。”[来自leslee]    “从开始学习php就开始接触模板,我用的是smarty模板引擎(官方支持,功能强大),使用时间越长越发觉得模板是个好东西。只要要涉及到页面显示的东西,我的都会用模板去写,如果不用模板写程序总觉得别扭。我想其他的phper也会有相同的感觉,因为模板设计的初衷是将代码和页面分离出来分别处理,毕竟谁也不愿意一边写代码,一边处理页面。”    “有人说SMARTY已经很好了,但也有人说SUPERTPL更好,也有人更中意于PHPLIB我认为每个模板都有自己优点,也有自己的不组,关键看你的项目需要什么,用什么最好!”[来自feifengxlq]“用模板肯定是没有错的最初使用的是PHPLIB,使用过了一段时间后,感觉太简单了,每个模板变量都要写代码去替换,每引用一个模板也得写一行代码(也许PHPLIB有批量处理功能,我太菜不知道)因而放弃了,后来用plog建站的时候接触到了smarty,感觉smarty过于庞大,确实能加快开发进度,但是很多功能实际都用不上,因此,最后还是自己写了模板引擎,要模板实现的功能很简单,就是一个模板变量的替换功能,再加上include其他模板和foreach块操作功能。”    “我还是用PHPLIB,不过,我会按自已的经验与需要,写一些函数或类来封装最常用的一些针对模板输出的处理。”[来自seraph]“我使用自己的模板,还要写模板解析代码,累呀。我选择使用现有优秀的模板。”[来自Bantu]“偶在别的论坛上看见一些很厉害的人不用模板...可能是没到那种境界...个人感觉还是使用模板的好..至少可以分工..加快开发速度。使用自己的模板? 感觉没有必要哈...用现成的就行了..在现成的基础上加上一些自己学要的实际功能。”[来自Phzzy]“我不使用模板引擎,但我也是使用模板,只是跟你们的不一样。因为模板引擎太慢了感觉不好用。”    “我用第三方的,最好是开源的。至于用哪个,看个人的爱好吧。”[来自leeyupeng]“我还是倾向于使用自己的模板简单实用。”[来自夕日]“由于考虑到性能,我一般不使用通用的模板,会根据实际情况做一些取舍,具有一定的局限性。”[来自Ben]“根据需要来决定使不使用模板,以及使用什么模板。灵活一点总是没有坏处的。”[来自xlmo]“个人喜欢简单快速的模板,可以考虑用现成的模板,不过一般会根据实际项目优化一下,把里面用不到的一些功能删除等。”    “使用模板一般倒不会导致瓶颈,至于会影响点效率主要这么几点:    1、程序和模板分离后,一个文件就变成两个或者多个了,那读取模板这个IO也是要点时间的
        2、解析模板相对是比较复杂的,一般都需要N个 preg_match,preg_replace之类函数来处理或者替换
        3、模板的载入和替换工作明显需要比不使用模板占用更多的内存    所以提高效率注意以下几点:    1、模板解析程序选用支持编译和缓存的,这个对性能好处是最明显,看自己怎么灵活应用了
        2、解析程序尽量简单,什么功能都放进去那用起来是方便了,性能也差了
        3、做html的模板页面时候也是遵从简单的原则,比如按xhtml标准做,尽量不要把一个页面拆成很多个模板然后再include。”    “如果使用模版的话,我觉得有能力还是自己写一个好。这也是锻炼。不过要用我觉得小强很好。可以在可视化下编辑。”[来自jejwe]“我个人也认为模板文件的可视化编辑性非常重要。不能要求模板页面的制作也要有相当程序开发基础的。”[来自seraph]“具体问题具体分析,模板使用与否,选择已经成型的优秀模板类还是自己去写,一切都是根据具体的项目开发而言的,不能死求哪一个的。”[来自Deepseath]“感觉现有的那些模版不够完善,要么功能少,要么速度慢,还是自己做的好。”    “总结,PHP模板可以让你的代码脉络更加清晰,结构更加合理化。但是,PHP模板的发展总是会比PHP应用的迅速发展缓慢许多,在这种情况下,反而会影响到PHP应用的开发。对于每一个PHPer来说,没有一个PHP模板对他是最合适、最完美的。因为所谓的PHP模板就是大众化的东西,并不是针对个人的。所以,如果能在对PHP特点、应用有清楚的认识的基础上充分认识到模板的优劣势和该PHP应用原理,PHPer就能得到自己需要的适合自己开发风格的PHP模板。这也是PHP最重要的思想之一,PHP提供的只是方法、途径,而不是最终解决方案。所以模板和PHP应用、产品一样都可以改造为自己的PHP模板。因为这里面寄托着创造者的思想。    限于各种不同的条件限制,比如时间、经验,所以大家可能认为做一个自己的PHP模板是非常困难。其实,你需要的不是重新构造一个PHP模板,而是选择一个最贴近自己的PHP模板加以改造。因为PHP需要继承、创新。当然,做一个自己的PHP模板一步一步地实现,并及时融入最新的思想和理念。个人PHPer可以从细节做起,从自己最需要的地方、自己的开发习惯做起。PHPer团队可以分工协作进行PHP模板本地化,尤其对于公司而言尤为实用。就算你只是修改了PHP模板里面的一个符号,仅仅是一个符号也能说明你对它加以了改造,它就是属于你的。最重要的是,属于自己的PHP模板永远不是固定不变的,它将伴随你一直成长,也会成为你的PHP历程的见证。    PHP不需要非常精通的语法;PHP不需要你自己去开发众多的库;PHP不需要你去为性能、稳定性等语言自身的特性而担心。PHP需要的是你的逻辑;PHP需要的是你的创造力;PHP需要的是你的思想!”
      

  5.   

    深入解析php模板技术原理
     
    1、模板的由来 
    在没有模板技术之前,使用PHP开发程序,通常都是php代码和html混编在一起。比如说新闻列表,很可能就是一个newslist.php页面,结构如下: <? 
    //从数据库中读取出要显示的新闻记录 
    ?> 
    <html> 
    <head>…….. 
    </head> 
    <body> 
    <? 
    While ($news = mysql_fetch_array($result)) { 
    ?> 
    <!--输出新闻标题 -- > 
    <? 

    ?> 
    </body> 
    </html> 那么这样有什么问题呢?首先,不利于分工合作。一般来说,都会由程序员来写代码,美工人员设计页面。那么在这种方式中,程序员必须等待美工人员把界面设计好才能开始工作。也就是说程序员和美工的工作是不能同步的。其次、不利于维护,可维护性差。比如说程序固定后,要修改界面,那么必须由美工修改后,程序员再重新添加。最后,程序结构混乱,可读性差。HTML和PHP混编在一起,一旦程序一多,就会变的非常的凌乱。 理解模板原理——使用PHP标签的模板技术 
    模板技术正是为了解决这些问题而出现的,为了解决这些问题,最早出现的是使用php标签的模板技术。 
    首先,我们要明白模板的目的是什么。模板主要要实现几个任务呢?第一、美工和程序的分离。更确切的说法是获取数据和显示数据的分离。第二、分工。良好的分工合作。 
    比如说新闻列表,如果使用模板,我们就可以把新闻列表的操作分成两部分: 
    1、 getnews.php 负责从数据库中读取数据到数组$news中,不关心$news是如何显示的。 
    2、 Shownews.php 负责把$news数组输出成HTML页面。而它不需要理会$news是从哪里来的。 
    好,这样,我们就实现了美工和程序的分离,达到了我们的初步目的,但是如何把这两个页面联合起来,并实现listnews.php的功能呢? 
    这就需要另外一个页面listnews.php,来负责把“美工(显示数据)”和“程序员(获取数据)”连接起来。应该说这个页面就是很简单了。 
    假设getnews.php的代码如下: 
    <? 
    $news =“新闻列表”;//实际中应该是从数据库中读取出来的。 
    ?> Shownesw.php的代码如下: 
    <html> 
    <head> 
    <title>显示新闻</title> 
    </head> 
    <body> 
    <?=$news?> 
    </body> 
    </html> 那么,这个联合页面listnews.php的代码就很简单了 
    <? 
    Include(‘getnews.php');//获取数据 
    Include(‘shownesw.php');//显示数据 
    ?> 总结 
    使用PHP标签的模板系统,能够很好的实现美工和程序的分离,同时方便程序员和美工人员的分工合作,比如在上面的例子中shownews.php由美工人员来维护,getnews.php由程序人员来维护。而listnews.php就可以由系统设计人员来维护了。当然这中间需要增加一些约定的文档。 
    事实上,这个简单的例子也说明了最基本的MVC模型。其中M,模型,也就是负责读取数据,相当于我们的getnews.php。V,就是试图,用来显示数据,也就对应了shownews.php。最后是控制器C,对应我们的listnews.php 学习解释性模板技术——PHPLIB 
    Phplib的模板系统以小巧灵活、方便简单的特点赢得了很多phper的喜欢,在模板技术中占有一定的地位,它和fasttemplate之类的模板引擎都属于解释性模板技术。 
    在具体讲解phplib的使用之前,先说明为什么使用php标签的模板系统要继续改进。其实,这主要还是因为PHP标签对美工人员来说不方便。他们更加喜欢直接使用这种可视化的标签,比如{title}。 
    首先,我们自己把之前我们那个例子修改成使用可视化的标签来处理。第一步,把shownews.php改成shownews.tpl,里面的php标签换成可视化的标签,shownews.tpl的代码如下: 
    <html> 
    <head> 
    <title>显示新闻</title> 
    </head> 
    <body> 
    {title} 
    </body> 
    </html> 
    第二步,如何实现listnews.php的效果呢?其实很简单,我只要直接把{title}替换成不就可以了吗?所以,修改后的listnews.php的代码如下: 
    <? 
    Include('getnews.php');//获取数据 
    echo str_replace('{title}',$news,file_get_contents('shownews.tpl')) 
    ?> 其实phplib的原理正是这样!比如说我们要使用phplib来实现上面功能,我们只需要修改listnews.php.修改后代码如下: 
    <? 
    Include('getnews.php');//获取数据 
    include('template.class.php'); 
    $t=new Template(); 
    $t->set_file(‘shownesw,'shownews.tpl'); 
    $t->set_var('news',$news); 
    $t->parse('out', ‘shownesw'); 
    $t->p('out'); 
    ?> 
    另外关于phplib的区域,大家可以去查阅相应的手册。 
      

  6.   

    这个就是smarty呀,你下个smarty手册看一下上面的例子都是这样。{}也可以自己定义,比如也可以用<{}>。
      

  7.   

    这个也是为了分隔开来!
    $a='b';
    $b='m';
    比如:echo "美元符号$$a";实际上你输出的是$b;但是你想输出的是“美元符号$b"这句话,可以这样写:
    echo "美元符号${$a}";我大概是这样理解的。就是避免有时候混淆。
      

  8.   

    如果出现在html或者所谓view试图中的话,就是模板占位符如果出现在实际代码中的话,有2两类1,占位符$b = 'b';
    $a = "\$b = {$b}";
    // $a 的实际内容为 $b = 12, 字符串索引$a = '123';
    $i = 1;
    echo $a{$i}3, 变量引用$a = 'b';
    $b = 'a';
    echo ${$a}