位置: 编程技术 - 正文

老生常谈PHP面向对象之解释器模式(php面向对象的三大特性)

编辑:rootadmin

推荐整理分享老生常谈PHP面向对象之解释器模式(php面向对象的三大特性),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入php:面向对象、模式与实践,php是面向什么的语言,深入php:面向对象、模式与实践,php是面向什么的语言,php是面向过程还是面向对象,php是面向过程还是面向对象,php面向对象是什么意思,深入php面向对象,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在看 “深入PHP面向对象模式与实践” ,学习书中的内容后瞬间觉得自己有点高大上了,哈 ! 其实还是个菜B。相信也会有新手朋友在看这本(我自己也是新手),对书中我个人认为比较难的内容的学习心得就想拿出来分享和交流,1是希望对自己所学知识能够起到巩固和加深理解的作用 2是希望对看到本文且感兴趣的新手朋友一些帮助。

这部分内容看了好几遍了代码也跟着敲了几遍,估计本文想要实现的功能大概就是用户在web页面上输入一些内容,然后通过后台程序解析后进行回复(感觉就是在废话)。例如我在前台web页面输入框里输入:

然后提交,系统就会回复类似 “条件成立” 或者 “条件不成立”的结果(有点类似直接在前台写代码并运行,后台解析后会返回一个结果。原书中虽然没有讲解整个前台输入到后台解析的过程但我猜这个后台解析应该还有一个使用正则表达式提取类似上面2行代码中关键字的过程)

上面这二行代码虽然是作者发明的语言,但根据字面含义也不难理解,第一行是定义一个变量并赋值,第二行是对变量进行一个判断(变量等于4或者等于four)。

废话不多说来看看这个模式定义的这几个类 (类图请自行看原文):

一、interpreterContext 这个类就像一个容器 主要是用来存放和获取需要进行比较的值和比较的结果的,例如上述代码中的4, four,和比较结果 “true”或“false”,保存的形式是数组即类的属性$expressionstore,代码如下:

这个类就像一个工具,供其他类来使用(它和其他类不存在继承、组合或聚合的关系)。

二、Expression 这是一个表达式的抽象类,定义了抽象方法interpret() 和方法getKey()

代码如下:

下面将要讲到的类都将继承这个类,并且他和OperatorExpression(操作符表达式抽象类)是一个组合的关系,也就是说OperatorExpression在初始化时可以包含所有继承了Expression的子类(这也是本书一直在强调的要面向接口编程,这个Expression就是个接口,利用这个接口可以实现多态,不知道自己装B说的对不对,哈! 具体可以在看看原书的类图)

三、LiteralExpression 文字表达式类,作用就是将一个字符串保存到InterpreterContext这个小容器里,保存成一个索引数组,例如保存开头那二句自创代码中的 4 或者 four

代码如下:

老生常谈PHP面向对象之解释器模式(php面向对象的三大特性)

四、VariableExpression 变量表达式类,和上面类的作用是一样的只不过数据将被保存成关联数组,关联数组中的健是变量名,值呢就是变量的值,例如开头二句中的变量"input" 和值 "4",

代码如下:

五、OperatorExpression 操作符表达式抽象基类,此类继承且组合了Expression抽象基类,实现的interpret()方法主要保存表达式的计算结果

代码如下:

六、EqualsExpression、BooleanOrExpression、BooleanAndExpression,分别为继承了OperatorExpression 抽象基类的相等表达式、或表达式、与表达式只有一个方法doInterpret()内部调用了InterpreterContext类的replace()方法将表达式的计算结果保存到InterpreterContext类的实例中

代码如下:

到此为止此模式相关的类就介绍完毕,上述代码都是进过测试的,可直接复制粘贴运行来查看结果,现在我们就来看看客户端代码:

客户端代码一:

客户端代码二:

客户端代码三:

这是原文的客户端代码实例和上述客户端代码的区别在于使用了变量表达式VariableExpression

上述代码经过测试都可以正常运行,有需要的朋友可以复制下来,运行一下看看结果。

以上这篇老生常谈PHP面向对象之解释器模式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例 本文实例讲述了PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能。分享给大家供大家参考,具体如下:phpheader("Content-Type:text/html;charset=gbk");include"Snoopy.c

php数值转换时间及时间转换数值用法示例 本文实例讲述了php数值转换时间及时间转换数值用法。分享给大家供大家参考,具体如下:echo$startime=strtotime(date("Y-m-d",time()));//当天0点时间戳echo"br/";ech

php分页查询mysql结果的base处理方法示例 本文实例讲述了php分页查询mysql结果的base处理方法。分享给大家供大家参考,具体如下:publicfunctionpublic_about(){$sql="SELECTc.catid,c.catname,c.catdir,FROM_BASE(p

标签: php面向对象的三大特性

本文链接地址:https://www.jiuchutong.com/biancheng/290389.html 转载请保留说明!

上一篇:php使用curl实现ftp文件下载功能(php的curl实例)

下一篇:PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例(php 正则函数)

  • 减免税额和免税额一样吗
  • 使用权资产和租赁负债的计税基础
  • 自行申报需补缴税款时征收滞纳金吗
  • 背书行为有效的是指什么
  • 季度30万免增值税什么时候结束
  • 销售返利的会计科目
  • 营业成本占营业收入比重较低的原因
  • 申报后发现成本算错了
  • 企业所得税汇算清缴申报表
  • 固定资产不能抵扣进项税额
  • 公司租用个人房屋如何记账
  • 政府扶持企业资金要交税吗
  • 铁路运输发票的开具要求
  • 员工向公司借的备用金到年底未还清
  • 业务员出差借款,用途写什么
  • 购买投资理财产品放的会计处理怎么做?
  • 小规模纳税人变成一般纳税人的条件
  • 小微企业开发票优惠政策
  • 预缴企业所得税怎么算
  • 开发商开临时发票
  • 购车装修能不能算固定资产
  • 多缴税款退回及退回
  • 实收资本不是股东打来的怎么调帐
  • 企业信息公示社保信息怎么填,公司没有交
  • 技嘉主板bios更新后无法开机
  • 中级会计考试考后审核需要什么资料
  • 固定资产应怎么做账
  • 计提职工薪酬怎么算
  • 期末增值税进项税大于销项税的金额计入哪里
  • 预存500抵扣1000是几折活动?
  • Yii2隐藏frontend/web和backend/web的方法
  • pos机未入账怎么回事
  • 收到现金股利或债券利息时会计分录
  • 海外供应商贸易平台
  • 房产税城镇土地使用税申报期限
  • 太平鸟的翅膀上有几道红羽毛
  • 在高地陶恩山脉的滑雪旅行,奥地利巴德加斯坦 (© RooM the Agency/Alamy)
  • 增值税纳税人的相关规定
  • php获取api内容
  • 股权投资企业收益怎么算
  • vue前进后退
  • javascript获取字符串长度
  • 蓝桥杯大赛2021
  • 手把手教你安装技嘉b550 master主板
  • 固定资产折完了怎么办
  • 增值税及附加交给国税还是地税
  • 利息发票可以抵扣吗
  • 材料暂估入库的依据有哪些
  • php怎么关闭
  • 5月份工作重点
  • 现金流量表的编制公式 计算公式
  • 未使用固定资产有哪些
  • 批发和零售业行业代码
  • linux 自启
  • 出售固定资产应收账款
  • 个人所得税的计算公式方法Excel
  • 饭馆增值税
  • 施工企业工人工作总结
  • 外贸企业的退税可以转出来吗
  • 发票必须与合同明细对应吗
  • 房屋租赁的注意问题
  • 农民工工资专用账户管理制度的办法
  • 结算账户分为哪几种?其用途结构如何?
  • mysql查询表语句
  • win7 组织
  • linux的sh
  • linux使用范围
  • ubuntu和windows比较有什么好处
  • linux 常用系统
  • macos 多屏
  • win7系统通过wmic命令
  • 主流安卓开发
  • html5翻页效果
  • 安卓返回按钮图标
  • 在页面中输出当前字符串的长度
  • js跨域的几种方法
  • Embedded statement cannot be a declaration or labeled statement
  • js入门基础教程
  • 一般纳税人做账收费标准
  • 神马电力几号发行
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设