php与设计模式-解释器模式

i7-2550K超频至5.2GHz实战:十年老U如何再战日常应用与轻度游戏 CPU超频是通过提升处理器工作频率来获得免费性能增益的经典硬件优化技术,其原理基于调整倍频、电压等参数,突破厂商预设限制。这项技术能显著提升单核性能,尤其对依赖高频的日常办公、编程开发及老款游戏场景价值突出。在当今存储性能(如SSD)和内存容量对体验影响日益显著的背景下,合理超频配合现代化外围配件,能让老旧平台重获新生。本文以Intel Sandy Bridge架构的i7-2550K为例,详细解析其超频至5.2GHz的方法、稳定性测试要点,并探讨其在当前轻度创作与电竞网游等场景中的实际应用潜力,为硬件爱好者 阅读详情

解释器模式

给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

Demo

<?php 
   /**
    * Created by PhpStorm.
    */ 

   /**环境角色
    * Class PlayContent
    */ 
   class PlayContent 
   { 
       public $content; 
   } 

   /**抽象解析器
    * Class IExpress
    */ 
   abstract class IExpress 
   { 
       //-----------------解释器---------------- 
       public function Translate(PlayContent $play_content) 
       { 
           if(empty($play_content->content)) 
           { 
               return false;  
           } 
           $key=mb_substr($play_content->content,0,1); 
           $play_content->content=mb_substr($play_content->content,2); 

           $val=mb_substr($play_content->content,0,mb_strpos($play_content->content,' ')); 
           $play_content->content=mb_substr($play_content->content,mb_strpos($play_content->content,' ')+1); 

           return $this->Excute($key,$val); 
       } 

       public abstract function Excute($key,$val); 
   } 
   //------------------------具体解析器------------- 
   /**音符
    * Class MusicNote
    */ 
   class MusicNote extends IExpress 
   { 
       public function Excute($key,$val) 
       { 
           $note=""; 
           switch($key) 
           { 
               case "C": 
                   $note = "1"; 
                   break; 
               case "D": 
                   $note = "2"; 
                   break; 
               case "E": 
                   $note = "3"; 
                   break; 
               case "F": 
                   $note = "4"; 
                   break; 
               case "G": 
                   $note = "5"; 
                   break; 
               case "A": 
                   $note = "6"; 
                   break; 
               case "B": 
                   $note = "7"; 
                   break; 
           } 
           return $note; 
       } 
   } 

   /**音阶
    * Class MusicScale
    */ 
   class MusicScale extends IExpress 
   { 
       public function Excute($key,$val) 
       { 
           $scale=""; 
           switch($val) 
           { 
               case "1": 
                   $scale="低音"; 
                   break; 
               case "2": 
                   $scale="中音"; 
                   break; 
               case "3": 
                   $scale="高音"; 
                   break; 
           } 
           return $scale; 
       } 
   } 

$play_content=new PlayContent(); 
$play_content->content="O 2 E 0.5 G 0.5 A 3 E 0.5 G 0.5 D 3 E 0.5 G 0.5 A 0.5 O 3 C 1 O 2 A 0.5 G 1 C 0.5 E 0.5 D 3 "; 
$interpreter=null; 
try 
{ 
   while(!empty($play_content->content)) 
   { 

       $str = mb_substr($play_content->content,0,1); 
       switch($str) 
       { 
           case "O": 
               $interpreter = new MusicScale(); 
               break; 
           case "C": 
           case "D": 
           case "E": 
           case "F": 
           case "G": 
           case "A": 
           case "B": 
           case "P": 
               $interpreter = new MusicNote(); 
               break; 
       } 
       echo $interpreter->Translate($play_content).'::'; 
   } 
} 
catch(Exception $e) 
{ 
   echo $e->getMessage(); 
} 

请关注我的订阅号

订阅号.png

PHP设计模式:解释器模式和PHP技巧 本文介绍了解释器模式的基本概念和实现方式,并结合PHP技巧演示了解释器模式在规则引擎中的应用。解释器模式(Interpreter Pattern)是一种行为型设计模式,它定义了一种语言解释器的结构,用于解释和执行特定的语言文法或表达式。在解释器模式中,我们可以使用匿名函数来定义终结符表达式和非终结符表达式的解释逻辑。通过上述代码,我们成功实现了一个简单的规则引擎,该引擎使用了解释器模式来解释和执行不同的规则。通过以上的PHP技巧,我们可以简化和优化解释器模式的实现代码,提高代码的可读性和可维护性。 阅读详情

相关推荐

[运营] ext4分区遇到“Structure needs cleaning”问题,怎么解决 - 结构需要清理

摘要:当ext4文件系统出现"Structure needs cleaning"错误时,表明存在元数据损坏。解决方法包括:1)检查系统日志确认错误;2)卸载受影响分区;3)使用fsck.ext4分步骤修复(先测试模式-n,再保守修复-p,严重损坏时用-y强制修复);4)检查修复结果;5)重新挂载。若数据丢失可尝试从lost+found恢复。建议定期备份、避免异常关机并定期检查文件系统,以防硬件故障导致类似问题。修复前务必备份重要数据。

Rudon滨海渔村的博客 1356

PHP设计模式系列 - 解释器模式

解释器模式 解释器模式 用于分析一个实体的关键元素,并且针对每个元素提供自己的解释或相应动作。解释器模式非常常用,比如PHP的模板引擎 就是非常常见的一种解释器模。 代码: <?php //解释器模式 用于分析一个实体的关键元素,并且针对每个元素提供自己的解释或相应动作 //解释器模式非常常用,比如PHP的模板引擎 就是非常常见的一种解释器模式 class temp

自娱自乐的代码人 3355

LuaJit分析(十一)去除string.dump函数

因此即使我们的指令顺序被打乱,通过loadfile系统调用,再通过string.dump调用,可以得到字节码文件,再通过与标准的luajit生成的字节码文件比对,即可找出差异所在。Lua脚本中的string.dump函数用于生成字节码文件,根据对 luajit -b命令的分析可以得出,最终dump出字节码文件都是使用的string.dump函数。同时lj_libdef.h和lj_ffdef.h这两个文件都是自动生成的,在msvcbuild.bat中,使用如下命令生成。

a545958498的博客 1131

PHP设计模式——解释器模式

声明:本系列博客参考资料《大话设计模式》,作者程杰。         解释器模式:Given a language, define arepresentation for its grammar along with an interpreter that uses therepresentation to interpret sentences in the language。给定一个语言

姜海强 3162

ArcGIS实战:利用IDW反距离权重法实现气象数据的批量空间插值

本文详细介绍了如何利用ArcGIS中的IDW反距离权重法实现气象数据的批量空间插值。通过实战案例和脚本示例,展示了IDW插值在气象数据分析中的高效应用,包括算法原理、参数调优、批处理自动化及常见问题解决方案,帮助用户快速生成连续分布的气象地图。

weixin_29051149的博客 239

在Matlab中开发AutoSAR模型的流程(自下而上)

前面介绍了AutoSAR软件组件开发的两种方式,其中自下向上的方式,是从模型出发,流程如下。

小胡同学的工程师学习之路 5364

php 解释器模式,PHP设计模式(二十二)—解释器模式(Interpreter Pattern)

解释器模式(Interpreter Pattern): 提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等(一)为什么需要解释器模式可以将一个需要解释执行的语言中的句子表示为一个抽象语法树(二)解释器模式UML图(三)简单实例解释器模式是开发中最少使用的,因为我们亲自编写语法解析的时候总是非常...

weixin_31367439的博客 173

K230+canMV开发中常见的数据类型转换参考示例

【代码】K230+canMV开发中常见的数据类型转换参考示例。

weixin_47446386的博客 67

php 解释器模式,C#设计模式:解释器模式(Interpreter Pattern)

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespace_23.解释器模式{/// ///Interpreter模式的应用场合是Interpreter模式应用中的难点,只有满足“业务规则频繁变化,且类似的模式不断重复出现,并且...

weixin_39665787的博客 141

【现代控制理论期末考点】

现代控制理论期末考点,适用于 SEU Automation

【人工智障 | 计算鸡视觉 | 机器孩】 1444

海康网口相机不能被flexscan3d识别到MVS版本为4.6.1,flex为3.3.24在MVS中能够检测到,但是在flex中只能看到电脑自带相机,如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1040

PHP设计模式—解释器模式

定义: 解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。 结构: AbstractExpression(抽象表达式):表明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享。 TerminalExpression(终结符表达式)

幽篁晓筑的博客 337

【WRF理论】配置诊断变量 &diags

【WRF理论】配置诊断变量 &diags

WW、forever的博客 136

初识PHP设计模式--解释器模式

解释器模式(Interpreter)理解起来挺难的,但是这种设计模式不常用。  适用于文法比较简单的程序,一旦文法复杂度大了,后期难以维护。  定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,每个文法可以表示成一个类,只需要扩展文法类,通过统一的解释器类进行调用解释。  比方说现在有一个解释器,可以把字母解释成一个完整的单词,如果需要扩展,可以创建第二个文法类,解释成其他

qq_36101162的博客 285

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

php实现设计模式之 解释器模式

解释器模式:给定一种语言,定义它文法的一种表示,并定义一个解释器,该解释器利用该表示来解释语言中的句子。case "0": return "零";case "1": return "一";case "2": return "二";case "3": return "三";case "4": return "四";case "5": return "五";case "6": return "六";case "7": return "七";case "8": return "八";

weixin_71792169的博客 131

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

php 解释器模式,PHP设计模式之解释器模式的深入解析

解释器(Interpreter)模式,它包括一个具有复合类分层结构的文法表现,规则是映射到类,跟随在文法后面的表达式可以被转换成一个抽象的语法树,除了复合模式的实例对象图外,没有别的内容。树是一个抽象的名词,因为实际上大多数时候它是一个表达式的抽象表现,它忽略了可能有一个字符串,也可能有一个数据结构的具体表达式,(例如,在PHP中,“A”和“\x41”是相同抽象字面值的不同具体表现),通过逻辑规则...

weixin_31943449的博客 150

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

配置php interpreter,php设计模式 Interpreter (解释器模式)

25种php设计模式,你全都知道吗?下面用代码介绍解释器模式(Interpreter模式)

weixin_39944146的博客 163

php 解释器模式,螃蟹学PHP设计模式之解释器模式

8.解释器模式今天又迟到了一个小时,不过现在基本任务都做完了,螃蟹的效率还是挺高的。昨天一天跑各个工商局,发现大学生创业的扶持真是太少了,还是写代码比较顺心。越学到后面,就越需要理解和区别不同的设计模式,螃蟹也会多回顾前面学过的设计模式。离吃饭还有一个多钟头,就把解释器模式搞定。这个应该很好理解就是解释,就像你买了一辆车,你向朋友从各个方面介绍。解释器模式应该用的最多的就是模板了,从数据库取出的数...

weixin_28761455的博客 121

PHP设计模式--解释器模式

 解释器模式(Interpreter)理解起来挺难的,但是这种设计模式不常用。 适用于文法比较简单的程序,一旦文法复杂度大了,后期难以维护。 定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,每个文法可以表示成一个类,只需要扩展文法类,通过统一的解释器类进行调用解释。 比方说现在有一个解释器,可以把字母解释成一个完整的单词,如果需要扩展,可以创建第二个文法类,解释成其他的意思(如中文)。...

战国墨竹的博客 495

php 解释器模式,PHP设计模式 - 解释器模式

给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。角色:环境角色(PlayContent):定义解释规则的全局信息。抽象解释器(Empress):定义了部分解释具体实现,封装了一些由具体解释器实现的接口。具体解释器(MusicNote):实现抽象解释器的接口,进行具体的解释执行。class Expression { //抽象表示function int...

weixin_39593593的博客 132

php 解释器模式,php设计模式 - 解释器模式

/***解释器示例**@create_date:2010-01-04*/interfaceIExpression{publicfunctioninterpreter($str);}classExpressionNumimplementsIExpression{publicfunctioninterpreter($str){switch($str){case"0":ret...

weixin_36090805的博客 180

螃蟹学PHP设计模式之解释器模式

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34357436的博客 118

PHP设计模式系列(二十二):解释器模式

解释器模式给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。模式结构 AbstractExpression:抽象表达式。声明一个抽象的解释操作,该接口为抽象语法树中所有的节点共享。 TerminalExpression:终结符表达式。实现与文法中的终结符相关的解释操作。实现抽象表达式中所要求的方法。文法中每一个终结符都有一个具体的终结表达式与之相对应。

qq_32300363的博客 519
上一篇: php与设计模式-命令模式
下一篇: php与设计模式-状态模式
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值