解释器: 解释器设计模式用于分析一个实体的关键元素,并且针对每个元素都提供自己的解释或相应的动作。
解释器设计模式最常用于PHP/HTML 模板系统。
<ol class="dp-c"><li class="alt"><span><span><?php </span></span></li><li><span> <span class="keyword">class</span><span> User { </span></span></li><li class="alt"><span> <span class="keyword">protected</span><span> </span><span class="vars">$_username</span><span> = </span><span class="string">""</span><span>; </span></span></li><li><span> <span class="keyword">public</span><span> </span><span class="keyword">function</span><span> __construct(</span><span class="vars">$username</span><span>) { </span></span></li><li class="alt"><span> <span class="vars">$this</span><span>->_username = </span><span class="vars">$username</span><span>; </span></span></li><li><span> } </span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">function</span><span> getProfilePage() { </span></span></li><li><span> <span class="vars">$profile</span><span> = </span><span class="string">"<h2>I like Never Again ! </h2>"</span><span>; </span></span></li><li class="alt"><span> <span class="vars">$profile</span><span> .= </span><span class="string">"I love all of their songs. My favorite CD: <br />"</span><span>; </span></span></li><li><span> <span class="vars">$profile</span><span> .= </span><span class="string">"{{myCD.getTitle}}!!"</span><span>; </span></span></li><li class="alt"><span> </span></li><li><span> <span class="keyword">return</span><span> </span><span class="vars">$profile</span><span>; </span></span></li><li class="alt"><span> } </span></li><li><span> } </span></li><li class="alt"><span> <span class="keyword">class</span><span> userCD { </span></span></li><li><span> <span class="keyword">public</span><span> </span><span class="keyword">function</span><span> setUser(User </span><span class="vars">$user</span><span>) { </span></span></li><li class="alt"><span> <span class="vars">$this</span><span>->_user = </span><span class="vars">$user</span><span>; </span></span></li><li><span> } </span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">function</span><span> getTitle() { </span></span></li><li><span> <span class="vars">$title</span><span> = </span><span class="string">"Waste of a Rib"</span><span>; </span></span></li><li class="alt"><span> <span class="keyword">return</span><span> </span><span class="vars">$title</span><span>; </span></span></li><li><span> } </span></li><li class="alt"><span> } </span></li><li><span> <span class="keyword">class</span><span> userCDInterpreter { </span></span></li><li class="alt"><span> </span></li><li><span> <span class="keyword">protected</span><span> </span><span class="vars">$_user</span><span> = NULL; </span></span></li><li class="alt"><span> </span></li><li><span> <span class="keyword">public</span><span> </span><span class="keyword">function</span><span> setUser(User </span><span class="vars">$user</span><span>) { </span></span></li><li class="alt"><span> <span class="vars">$this</span><span>->_user = </span><span class="vars">$user</span><span>; </span></span></li><li><span> } </span></li><li class="alt"><span> </span></li><li><span> <span class="keyword">public</span><span> </span><span class="keyword">function</span><span> getInterpreted() { </span></span></li><li class="alt"><span> <span class="vars">$profile</span><span> = </span><span class="vars">$this</span><span>->_user->getProfilePage(); </span></span></li><li><span> </span></li><li class="alt"><span> <span class="keyword">if</span><span> (preg_match_all(</span><span class="string">'/\{\{myCD\.(.*?)\}\}/'</span><span>, </span><span class="vars">$profile</span><span>, </span><span class="vars">$triggers</span><span>, PREG_SET_ORDER)) { </span></span></li><li><span> <span class="vars">$replacements</span><span> = </span><span class="keyword">array</span><span>(); </span></span></li><li class="alt"><span> </span></li><li><span> <span class="keyword">foreach</span><span> (</span><span class="vars">$triggers</span><span> </span><span class="keyword">as</span><span> </span><span class="vars">$trigger</span><span>) { </span></span></li><li class="alt"><span> <span class="vars">$replacements</span><span>[] = </span><span class="vars">$trigger</span><span>[1]; </span></span></li><li><span> } </span></li><li class="alt"><span> </span></li><li><span> <span class="vars">$replacements</span><span> = </span><span class="func">array_unique</span><span>(</span><span class="vars">$replacements</span><span>); </span></span></li><li class="alt"><span> </span></li><li><span> <span class="vars">$myCD</span><span> = </span><span class="keyword">new</span><span> userCD(); </span></span></li><li class="alt"><span> <span class="vars">$myCD</span><span>->setUser(</span><span class="vars">$this</span><span>->_user); </span></span></li><li><span> </span></li><li class="alt"><span> <span class="keyword">foreach</span><span> (</span><span class="vars">$replacements</span><span> </span><span class="keyword">as</span><span> </span><span class="vars">$replacement</span><span>) { </span></span></li><li><span> <span class="vars">$profile</span><span> = </span><span class="func">str_replace</span><span>(</span><span class="string">"{{myCD.{$replacement}}}"</span><span>, call_user_func(</span><span class="keyword">array</span><span>(</span><span class="vars">$myCD</span><span>, </span><span class="vars">$replacement</span><span>)), </span><span class="vars">$profile</span><span>); </span></span></li><li class="alt"><span> } </span></li><li><span> } </span></li><li class="alt"><span> </span></li><li><span> <span class="keyword">return</span><span> </span><span class="vars">$profile</span><span>; </span></span></li><li class="alt"><span> } </span></li><li><span> </span></li><li class="alt"><span> } </span></li><li><span> <span class="vars">$username</span><span> = </span><span class="string">"aaron"</span><span>; </span></span></li><li class="alt"><span> <span class="vars">$user</span><span> = </span><span class="keyword">new</span><span> User(</span><span class="vars">$username</span><span>); </span></span></li><li><span> <span class="vars">$interpreter</span><span> = </span><span class="keyword">new</span><span> userCDInterpreter(); </span></span></li><li class="alt"><span> <span class="vars">$interpreter</span><span>->setUser(</span><span class="vars">$user</span><span>); </span></span></li><li><span> </span></li><li class="alt"><span> print <span class="string">"<h1>{$username}'s Profile</h1>"</span><span>; </span></span></li><li><span> print <span class="vars">$interpreter</span><span>->getInterpreted(); </span></span></li><li class="alt"><span>?> </span></li></ol>数据库脚本请参照:http://www.cxybl.com/html/wlbc/php/2011_1126_9458.html
Magento是一套专业开源的PHP电子商务系统。Magento设计得非常灵活,具有模块化架构体系和丰富的功能。易于与第三方应用系统无缝集成。Magento开源网店系统的特点主要分以下几大类,网站管理促销和工具国际化支持SEO搜索引擎优化结账方式运输快递支付方式客户服务用户帐户目录管理目录浏览产品展示分析和报表Magento 1.6 主要包含以下新特性:•持久性购物 - 为不同的










