最近,看了一篇介绍关于PHP中类与对象关系的文章,感觉对类和对象的理解又加深了一层,这里总结一下:

(1):创建一个新的类

class Test{public  $class_name = "Test";private  $class_prefix = "Class_Test";public function get_class_name(){echo $this->$class_name;}private function get_class_prefix(){echo $this->$class_prefix;}
}复制代码

(2):实例化出一个对象

$obj_a = new Test();复制代码

(3):序列化该对象

echo serialize($obj_a); 复制代码

打印结果如下:

O:4:"Test":2:{s:10:"class_name";s:4:"Test";s:18:"Testclass_prefix";s:10:"Class_Test";}复制代码

根据打印的结果可以看到:将对象进行序列化处理以后,得到的结果中仅仅包含了类中定义好的属性(class_name以及class_prefix),但是并不含有类中定义好的方法。

(4):将对象强转为数组,并进行打印输出

var_dump((array)$obj_a);复制代码

打印结果如下:

array (size=2)'class_name' => string 'Test' (length=4)'�Test�class_prefix' => string 'Class_Test' (length=10)复制代码

根据打印的结果可以看出:将对象进行强制转换以后,得到的结果中仅仅包含类中定义好的属性,仍然不含有类中定义好的方法。

那么我们可不可以认为对象中是不是根本就不含有方法那,是不是对象根本就是属性的集合那?如果对象中不具有方法,仅仅是属性的结合,那么上面的结果都是合理的了。

其实,根据了解,php中的对象本身就是属性的集合,并不含有任何的方法。php中的对象变量除了含有属性以外,还有一个指针,指向实例化该对象的类。调用对象名.方法名其实是根据指针调用指向类中的定义的方法。

具体的底层实现可以参考下图:

结合之前的理解,PHP中的类与对象之间的关系如下:

(1):类其实是定义一系列属性与操作的模板,而对象则是将属性进行具体化,然后交给类进行处理。

(2):对象其实就是数据,对象本身不包含方法。但是对象中含有一个指针指向一个类,这个类中含有这个方法。

(3):方法描述不同的属性会导致不同的结果表现。

PHP 中的类, 对象之间的关系相关推荐

  1. 【每天进步一点】C#对象之间的关系

    一.简介 类是对象的集合,展示了对象的结构以及与系统的交互行为.类主要有属性(Attribute)和方法(Method)构成,属性代表对象的状态,如果属性被保存到数据库,此称之为"持久化&q ...

  2. [UML] 类图之间的关系 | 1.关联关系

    [UML] 类图之间的关系 | 1.关联关系 1.关联关系 关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系 在UML类图中, ...

  3. 一文理清Mybatis中resultType与resultMap之间的关系和使用场景

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 1.概述 Mybatis ORM半自动映射框架对java开发工程师来说应该是必会的框架之一. ...

  4. 面向过程和面向对象的编程思想 复习原型 构造函数和实例对象和原型对象之间的关系

    体会面向过程和面向对象的编程思想 <!DOCTYPE html> <html lang="en"> <head><meta charset ...

  5. Python中怎样改变集合之间的关系?

    Python中怎样改变集合之间的关系?数学中,两个集合关系的常见操作包括:交集.并集.差集.补集.设A,B是两个集合,集合关系的操作介绍如下: 交集是指属于集合A且属于集合B的元素所组成的集合, 并集 ...

  6. Javascript基础与面向对象基础~第四讲 Javascript中的类对象

    今天来说JS中如何实现类(class),事实上本应该昨天晚上写的,可我失言了,在些说一声"抱歉"!JS中的类是JS面向对象的基础,也是我最拿手的东西,你写的代码能否提高一个层次,一 ...

  7. 构造函数和实例对象之间的关系 构造函数创建对象带来的问题 原型

    构造函数和实例对象之间的关系 <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

  8. python类定义中、对象字符串的特殊方法是_python中自定义类对象json字符串化的方法_python json转字符串、...

    python中自定义类对象json字符串化的方法 1. 用 json 或者simplejson 就可以 2.定义转换函数: def convert_to_builtin_type(obj): prin ...

  9. 前端小知识点(9):函数和对象之间的关系

    目录 函数与对象之间的关系 代码演示 运行结果 函数与对象之间的关系 函数 有什么 : 函数也是对象          函数有:prototype 对象 有什么 对象:__proto__ 原型对象里面 ...

最新文章

  1. JAVA多线程提高十四: 面试题
  2. junit4 javaee 5.0 jpa SSH 单元测试问题集锦
  3. 只显示隐藏文件 显示指定目录下的目录
  4. 2013年最值得我们学习的网页作品示例【系列六】
  5. 小米android系统耗电量大,小米手机耗电快的解决方法,亲测有效~
  6. 为什么要使用反射机制
  7. GDPR到底是如何影响机器学习的?
  8. android 表情,软键盘冲突解决方案(仿微博等SNS应用)
  9. 用python和sympy库解决方程组问题_Python语言 SymPy库数学方程问题——线性方程组篇...
  10. java nio 连接数_Java NIO 基础一 NIO概念
  11. MySQL命令行导入导出sql文件
  12. 改进后的日志类CLogger
  13. JAVA:获得当前执行路径的办法
  14. 具体化和实例化的应用
  15. 【Java核心技术卷】谈谈对Java平台的理解
  16. M6(面试)-01-牛客网Java面试题集锦
  17. cartographer基于3d地图的纯定位模式
  18. PIC单片机-Mplab的使用与实践
  19. cdd matlab 算法,CDD图像修复
  20. 1、4表格细线边框合并

热门文章

  1. 对已经关闭的的chan进行读写,会怎么样?为什么?
  2. zookeeper专题:zookeeper集群模式下,leader选举流程分析
  3. 利用计算机测地震是计算机的什么,计算机在气象预报、地震探测、导弹卫星轨迹等方面的应用都属于( )...
  4. Go Web编程--深入学习解析HTTP请求
  5. 解决方案:超卖(Redis原子队列)
  6. 关于JVM的几个问题
  7. 利用hutool工具类导出Excel
  8. Hadoop联姻Excel: 微软巩固Office帝国
  9. 《史上最简单的 SpringCloud 教程》系列
  10. 需求迭代:迭代需求矩阵