如何使用简单 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()方法可以使用,但是在某些情况下并不高效.特别是对于那些需 ...
随机推荐
- MD5中使用16进制
MD5中使用16进制消息摘要 分类: java_secruity2012-12-28 13:11 719人阅读 评论(0) 收藏 举报 消息摘要 由于数据在计算机中的表示,最终以二进制的形式存在,所以 ...
- d3.js v4曲线图的拖拽功能实现Zoom
zoom缩放案例 源码:https://github.com/HK-Kevin/d...:demo:https://hk-kevin.github.io/d3...: 原理:通过zoom事件来重新绘制 ...
- 爬取腾讯网的热点新闻文章 并进行词频统计(Python爬虫+词频统计)
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:一棵程序树 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
- E2. Send Boxes to Alice (Hard Version)
秒的有点难以理解:https://blog.csdn.net/weixin_42868863/article/details/103200132 #include<bits/stdc++.h&g ...
- win10下cuda安装以及利用anaconda安装pytorch-gpu过程
安装环境:win10+2070super 1.Cuda的下载安装及配置 (1)测试本机独立显卡是否支持CUDA的安装,点击此处查询显卡是否在列表中. (2)查看自己是否能右键找到NVIDA控制面板,如 ...
- 今天开始让我们一起来学JavaScript吧!(今天先扯先别的)
1.为什么要学习JavaScript? 首先它是web开发人员必须学习的3门语言之一: ①HTML定义了网页的内容 ②CSS描述了网页的布局: ③JavaScript网页的行为 首先JavaScrip ...
- 4. css事件
可通过使用css伪类实现点击元素变色的效果,两个伪类是:active, :focus :active :active选择器用于选择活动链接.当在一个链接上点击时,它就会成为活动的(激活的),:acti ...
- 乱 七 八 糟 $(n.)$
\(2020/4/22\) 今天常规作业还是太慢了,白天似乎已经抓紧了,但总还能挤出时间来的.八点钟了还有物理和英语作业,回去又得很晚睡. 还是容易开小差,不过回忆了一下,今天化学课还是太懒散,其余的 ...
- Laravel - 上手实现 - 邮件发送
Laravel 自带 SwiftMailer 库,集成了多种邮件API,可以很方便的实现邮件的发送. 我们使用到的是SMTP(Simple Message Transfer Protocol)简单邮件 ...
- django基础(一) - 安装和配置文件
django介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C. <div style='color: red'> ...