如果您熟悉 Java,可能您已经知道 POJO (普通 Java 类). 因为 POJO 这个词最早是由 Martin Fowler、Rebecca Parsons 和 Josh MacKenzie 于 2000 年在 Java 编程语言上创造的。 POJO 使我们更容易理解类对象中的数据结构类型。

我们有如下的问题:

  1. POJO 在另一种编程语言中的名称是什么?
  2. 为什么在现代 PHP 编程中使用 POPO?
  3. 如何在现代 php 编程中制作 POPO?
  4. 如何在现代 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,我们

  1. 可以调用 “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 简化你的参数函数,你可以得到更好地通信每个对象或类。

参考

  1. Plain old Java Object
  2. Data Transfer Object

更多学习内容请访问:

腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)

如何使用简单 PHP 对象 POPO (Plain old PHP Object) 来优化你的代码的更多相关文章

  1. javascript自定义简单map对象功能

    这里介绍一种js创建简单map对象的方法: function Map() { //创建object对象, 并给object对象添加key和value属性 var obj1=new Object(); ...

  2. 在C#中实现简单的对象池

    当我们频繁创建删除大量对象的时候,对象的创建删除所造成的开销就不容小觑了.为了提高性能,我们往往需要实现一个对象池作为Cache:使用对象时,它从池中提取.用完对象时,它放回池中.从而减少创建对象的开 ...

  3. Java网络与多线程系列之1:实现一个简单的对象池

    前言 为什么要从对象池开始呢,先从一个网络IO操作的demo说起 比如下面这段代码,显而易见已经在代码中使用了一个固定大小的线程池,所以现在的重点在实现Runnble接口的匿名对象上,这个对象每次创建 ...

  4. Java基础-SSM之Spring的POJO(Plain Old Java Object)实现AOP

    Java基础-SSM之Spring的POJO(Plain Old Java Object)实现AOP 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 上次我分享过Spring传统的A ...

  5. 代码轮子之很简单但是挺管用的基于C# Task的模拟并发的代码

    代码轮子之很简单但是挺管用的基于C# Task的模拟并发的代码

  6. 该对象尚未初始化。请确保在所有其他初始化代码后面的应用程序启动代码中调用 HttpConfiguration.EnsureInitialized()。

    WebAPI使用属性路由,配置config.MapHttpAttributeRoutes();后出现错误: System.InvalidOperationException: 该对象尚未初始化.请确保 ...

  7. 简单类型对象 String

    简单值不是对象,因此也没有属性方法,因此运行下面代码时   var s1 = “some text”; var s2 = s1.substring(2);   实际上是运行在read模式,字符串的值会 ...

  8. 用最简单的例子理解对象为Null模式(Null Object Pattern)

    所谓的"对象为Null模式",就是要求开发者考虑对象为Null的情况,并设计出在这种情况下的应对方法. 拿"用最简单的例子理解策略模式(Strategy Pattern) ...

  9. Unity实现简单的对象池

    一.简介 先说说为什么要使用对象池 在Unity游戏运行时,经常需要生成一些物体,例如子弹.敌人等.虽然Unity中有Instantiate()方法可以使用,但是在某些情况下并不高效.特别是对于那些需 ...

随机推荐

  1. python3(八) function

    # Python 常用内置函数 https://docs.python.org/3/library/functions.html#abs print(help(abs)) # Return the a ...

  2. 【Java】Operator 运算符/操作符

    Operator 运算符/操作符 什么是操作符? 一个表示特定的数学或逻辑操作的符号 算术运算符 加 + 减 - 乘 * 除 / 取模 % 前置自运算 ++ a .--b 后置自运算 a++ .b-- ...

  3. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(八)之Reusing Classes

    The trick is to use the classes without soiling the existing code. 1. composition--simply create obj ...

  4. Vue定义全局过滤器filter

    这里介绍的是多个过滤器一起添加到全局中 1.创建方法 首先src下新建plugin文件夹,用来存放插件. 在plugin文件夹内新建filters.js,编写方法(如隐藏手机号码等等...) /** ...

  5. .Net Core Send Email

    1.安装Nuget包MailKit,引用命名空间. using MailKit.Net.Smtp; using MimeKit; 注意:引用MailKit对应最新版本 2.定义收发地址和标题 Mime ...

  6. 2020新Asp.NET敏捷快速开发框架7.0.5旗舰版源码asp.net mvc框架,工具类CRM,工作流

    演示地址: http://frame3.diytassel.com  用户名:system  密码:0000    需要的联系QQ:22539134 一.新添加了 1.多语言功能: 2.代码生成器模版 ...

  7. bugku ctf 逆向题

    1.逆向入门 2.Easy_vb 直接找出来. 3.easy_re 4.游戏过关 摁着嗯着就出来了... 5.Timer{阿里ctf} apk文件,不会搞. 6.逆向入门 发现是base64,直接转图 ...

  8. Liunx常用操作(一)-删除命令

    在linux命令行模式下,如何一次性快速删除一行刚刚输入的命令? 经常在命令行输入命令的时候,一段文字都需要删除,一个字段一个字段,比较耗费时间 以下提供一些命令,配合在一起操作,可以一定程度提高工作 ...

  9. 用SQL查询分析实现类似金蝶K3的收发存明细表

    使用SQL查询分析实现类收发存的报表,原始需求在 另外一篇文章 的第四部分.下图是实现需求. 一.准备 删除临时表 [buy]判断是否存在临时表,存在则删除[/buy] if OBJECT_ID('t ...

  10. mybatis源码学习:插件定义+执行流程责任链

    目录 一.自定义插件流程 二.测试插件 三.源码分析 1.inteceptor在Configuration中的注册 2.基于责任链的设计模式 3.基于动态代理的plugin 4.拦截方法的interc ...