解释器设计模式是什么?

PHP 基础面试题
0
0
分享
推荐答案
展示答案

<?php //解释器设计模式用于分析一个实体的关键元素,并且针对每个元素都提供自己的解释或相应的动作。 class User{ protected $_username = ''; public function __construct($username){ $this->_username = $username; } public function getProfilePage(){ $profile = "<h2>I like Never Again!</h2>"; $profile .= "I love all of their songs.My favorite CD:<br />"; $profile .= "`myCD`.`getTitle`!!"; return $profile; } } class userCD{ protected $_user = NULL; public function setUser($user){ $this->_user = $user; } public function getTitle(){ $title = 'Waste of Rib'; return $title; } } class userCDInterpreter{ protected $_user = NULL; public function setUser($user){ $this->_user = $user; } public function getInterpreted(){ $profile = $this->_user->getProfilePage(); if(preg_match_all('/\{\{myCD\.(.*?)\}\}/', $profile, $triggers, PREG_SET_ORDER)){ $replacements = []; foreach($triggers as $trigger){ $replacements[] = $trigger[1]; } $replacements = array_unique($replacements); $myCD = new userCD(); $myCD->setUser($this->_user); foreach($replacements as $replacement){ $profile = str_replace("{{myCD.{$replacement}}}", call_user_func([$myCD, $replacement]), $profile); } } return $profile; } } $username = 'aaron'; $user = new User($username); $interpreter = new userCDInterpreter(); $interpreter->setUser($user); echo "<h1>{$username}'s Profile'</h1>"; echo $interpreter->getInterpreted();

答案已隐藏