• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP设计模式之解释器模式_php

php 搞代码 3年前 (2018-06-21) 164次浏览 已收录 0个评论

解释器: 解释器设计模式用于分析一个实体的关键元素,并且针对每个元素都提供自己的解释或相应的动作。
解释器设计模式最常用于php/html 模板系统。

  1. <?php   
  2.     class User {   
  3.         protected $_username = "";   
  4.         public function __construct($username) {   
  5.             $this->_username = $username;   
  6.         }  
  7.         public function getProfilePage() {   
  8.             $profile  = "<h2>I like Never Again ! </h2>";   
  9.             $profile .= "I love all of their songs. My favorite CD: <br />";   
  10.             $profile .= "{{myCD.getTitle}}!!";   
  11.                
  12.             return $profile;   
  13.         }   
  14.     }   
  15.     class userCD {   
  16.         public function setUser(User $user) {   
  17.             $this->_user = $user;   
  18.         }   
  19.         public function getTitle() {   
  20.             $title = "Waste of a Rib";   
  21.             return $title;   
  22.         }   
  23.     }   
  24.     class userCDInterpreter {   
  25.            
  26.         protected $_user = NULL;   
  27.            
  28.         public function setUser(User $user) {   
  29.             $this->_user = $user;   
  30.         }   
  31.            
  32.         public function getInterpreted() {   
  33.             $profile = $this->_user->getProfilePage();   
  34.                
  35.             if (preg_match_all('//{/{myCD/.(.*?)/}/}/'$profile$triggers, PREG_SET_ORDER)) {   
  36.                 $replacements = array();   
  37.                    
  38.                 foreach ($triggers as $trigger) {   
  39.                     $replacements[] = $trigger[1];   
  40.                 }   
  41.                    
  42.                 $replacements = array_unique($replacements);   
  43.                    
  44.                 $myCD = new userCD();   
  45.                 $myCD->setUser($this->_user);   
  46.                    
  47.                 foreach ($replacements as $replacement) {   
  48.                     $profile = str_replace("{{myCD.{$replacement}}}", call_user_func(array($myCD$replacement)), $profile);   
  49.                 }   
  50.             }   
  51.                
  52.             return $profile;   
  53.         }   
  54.            
  55.     }   
  56.     $username = "aaron";   
  57.     $user = new User($username);   
  58.     $interpreter = new userCDInterpreter();   
  59.     $interpreter->setUser($user);   
  60.        
  61.     print "<h1>{$username}'s Profile</h1>";   
  62.     print $interpreter->getInterpreted();   
  63. ?> 

 数据库脚本请参照:http://www.cxybl.com/html/wlbc/Php/2011_1126_9458.html

欢迎大家阅读《PHP设计模式之解释器模式_php,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址