如何使用简单 PHP 对象 POPO (Plain old PHP Object) 来优化你的代码
如果您熟悉 Java,可能您已经知道 POJO (普通 Java 类). 因为 POJO 这个词最早是由 Martin Fowler、Rebecca Parsons 和 Josh MacKenzie 于 2000 年在 Java 编程语言上创造的。 POJO 使我们更容易理解类对象中的数据结构类型。
我们有如下的问题:
- POJO 在另一种编程语言中的名称是什么?
- 为什么在现代 PHP 编程中使用 POPO?
- 如何在现代 php 编程中制作 POPO?
- 如何在现代 PHP 编程中实现 POPO?
1.那么在另一种编程语言中 POJO 的名字是什么呢?
关于普通旧对象的约定是 “普通旧编程语言对象”。如果你在 Ruby 上,你可以调用 PORO(普通旧 Ruby 对象),也许 Rubyist 已经知道了。如果是在 PHP 中,则被称为 POPO(普通旧 PHP 对象)。如果每种语言都有一个类,那么它们都可以实现普通的旧对象。
2为什么在现代 PHP 编程中使用 POPO ?
POPO 可以指导我们了解数据结构,并让我们清楚地了解对象上的数据类型。 你可以在 POPO 中创建 DTO(数据传输对象),例如:“toArray ()”,“castToClass ()”,“toJSON ()” 之类的。所以数据或值不是在变量中,而是在基于类对象的。它可以为你提供关于如何从对象 A 到对象 B 进行通信的标准化。 给你更少的函数参数,你只需通过 POPO 类。在现代的 PHP 编程 web 应用程序中,我们经常使用 MVC(模型、视图、控制器),它会经常与每个对象通信。从控制器到 service,控制器从 service 获取数据返回,并返回到视图。有了 POPO,我们可以更好地与每个对象通信。
3.如何在 PHP 编程中定义 POPO?
你可以通过定义什么类、什么属性来使用 POPO?POPO 应该有 setter 和 getter。首先定义类,食品有属性名、价格、数量和总价。然后我们可以通过食品 POPO 上的 setter 函数来设置值。如果我们想把它转换成 JSON,我们
- 可以调用 “toJSON ()” 函数等。你可以根据自己的需要开发。例如:

4.如何在现代 PHP 编程中实现 POPO ?
你可以通过创建新的 POPO 来启动它。在上面的例子中,我们可以用 php 语法调用 “new Food ()”。
例 1 (简单 Controller):

在例 1 中,我们使用 toArray () 与 Model 通信。
示例 2 (Controller, Service and Model):

我们将类对象传递给 service

我们使用 toArray () 来与 Model 通信。
在下面的 food 服务中,没有 POPO 函数使他看起来不可维护,太多参数了。

结论
这是现代 PHP 中的一个快速实现。你可以使用 POPO 简化你的参数函数,你可以得到更好地通信每个对象或类。
参考
更多学习内容请访问:
腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)
如何使用简单 PHP 对象 POPO (Plain old PHP Object) 来优化你的代码的更多相关文章
- javascript自定义简单map对象功能
这里介绍一种js创建简单map对象的方法: function Map() { //创建object对象, 并给object对象添加key和value属性 var obj1=new Object(); ...
- 在C#中实现简单的对象池
当我们频繁创建删除大量对象的时候,对象的创建删除所造成的开销就不容小觑了.为了提高性能,我们往往需要实现一个对象池作为Cache:使用对象时,它从池中提取.用完对象时,它放回池中.从而减少创建对象的开 ...
- Java网络与多线程系列之1:实现一个简单的对象池
前言 为什么要从对象池开始呢,先从一个网络IO操作的demo说起 比如下面这段代码,显而易见已经在代码中使用了一个固定大小的线程池,所以现在的重点在实现Runnble接口的匿名对象上,这个对象每次创建 ...
- Java基础-SSM之Spring的POJO(Plain Old Java Object)实现AOP
Java基础-SSM之Spring的POJO(Plain Old Java Object)实现AOP 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 上次我分享过Spring传统的A ...
- 代码轮子之很简单但是挺管用的基于C# Task的模拟并发的代码
代码轮子之很简单但是挺管用的基于C# Task的模拟并发的代码
- 该对象尚未初始化。请确保在所有其他初始化代码后面的应用程序启动代码中调用 HttpConfiguration.EnsureInitialized()。
WebAPI使用属性路由,配置config.MapHttpAttributeRoutes();后出现错误: System.InvalidOperationException: 该对象尚未初始化.请确保 ...
- 简单类型对象 String
简单值不是对象,因此也没有属性方法,因此运行下面代码时 var s1 = “some text”; var s2 = s1.substring(2); 实际上是运行在read模式,字符串的值会 ...
- 用最简单的例子理解对象为Null模式(Null Object Pattern)
所谓的"对象为Null模式",就是要求开发者考虑对象为Null的情况,并设计出在这种情况下的应对方法. 拿"用最简单的例子理解策略模式(Strategy Pattern) ...
- Unity实现简单的对象池
一.简介 先说说为什么要使用对象池 在Unity游戏运行时,经常需要生成一些物体,例如子弹.敌人等.虽然Unity中有Instantiate()方法可以使用,但是在某些情况下并不高效.特别是对于那些需 ...
随机推荐
- java京东自动登录
大部分代码都是参考的这边,我只是在他的逻辑上实现了自动通过验证码,放上主逻辑的代码吧,图片识别我用的若快,可以去接其他平台 https://blog.csdn.net/u013232789/artic ...
- scala_spark实践4
SparkStreaming中foreachRDD SparkStreaming是流式实时处理数据,就是将数据流按照定义的时间进行分割(就是“批处理”).每一个时间段内处理的都是一个RDD.而Spar ...
- Linux c++ vim环境搭建系列(2)——Ubuntu18.04.4编译安装llvm clang
2. 源码编译安装llvm clang 参考网址: https://llvhttps
- Java课程设计之——爬虫篇
主要使用的技术 Httplcient Jsoup 多线程 dao模式 网络爬虫简介 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取 ...
- Spring 下,关于动态数据源的事务问题的探讨
开心一刻 毒蛇和蟒蛇在讨论谁的捕猎方式最高效. 毒蛇:我只需要咬对方一口,一段时间内它就会逐渐丧失行动能力,最后死亡. 蟒蛇冷笑:那还得等生效时间,我只需要缠住对方,就能立刻致它于死地. 毒蛇大怒:你 ...
- Julia基础语法字符和字符串
1.Julia字符串 2.字符
- python的多线程、多进程、协程用代码详解
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:刘早起早起 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
- beanshell 常用的内置变量与函数
官方详细文档:https://github.com/beanshell/beanshell/wiki log:用来记录日志文件 log.info("jmeter"); vars - ...
- Jmeter系列(3)- Jmeter安装目录介绍
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html Jmeter安装目录说明 bin:包含 ...
- 基于 Python 的自动文本提取:抽象法和生成法的比较
我们将现有的 提取方法(Extractive)(如LexRank,LSA,Luhn和Gensim现有的TextRank摘要模块)与含有51个文章摘要对的Opinosis数据集进行比较.我们还尝试使用T ...