PHP 中的类, 对象之间的关系
最近,看了一篇介绍关于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 中的类, 对象之间的关系相关推荐
- 【每天进步一点】C#对象之间的关系
一.简介 类是对象的集合,展示了对象的结构以及与系统的交互行为.类主要有属性(Attribute)和方法(Method)构成,属性代表对象的状态,如果属性被保存到数据库,此称之为"持久化&q ...
- [UML] 类图之间的关系 | 1.关联关系
[UML] 类图之间的关系 | 1.关联关系 1.关联关系 关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系 在UML类图中, ...
- 一文理清Mybatis中resultType与resultMap之间的关系和使用场景
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 1.概述 Mybatis ORM半自动映射框架对java开发工程师来说应该是必会的框架之一. ...
- 面向过程和面向对象的编程思想 复习原型 构造函数和实例对象和原型对象之间的关系
体会面向过程和面向对象的编程思想 <!DOCTYPE html> <html lang="en"> <head><meta charset ...
- Python中怎样改变集合之间的关系?
Python中怎样改变集合之间的关系?数学中,两个集合关系的常见操作包括:交集.并集.差集.补集.设A,B是两个集合,集合关系的操作介绍如下: 交集是指属于集合A且属于集合B的元素所组成的集合, 并集 ...
- Javascript基础与面向对象基础~第四讲 Javascript中的类对象
今天来说JS中如何实现类(class),事实上本应该昨天晚上写的,可我失言了,在些说一声"抱歉"!JS中的类是JS面向对象的基础,也是我最拿手的东西,你写的代码能否提高一个层次,一 ...
- 构造函数和实例对象之间的关系 构造函数创建对象带来的问题 原型
构造函数和实例对象之间的关系 <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...
- python类定义中、对象字符串的特殊方法是_python中自定义类对象json字符串化的方法_python json转字符串、...
python中自定义类对象json字符串化的方法 1. 用 json 或者simplejson 就可以 2.定义转换函数: def convert_to_builtin_type(obj): prin ...
- 前端小知识点(9):函数和对象之间的关系
目录 函数与对象之间的关系 代码演示 运行结果 函数与对象之间的关系 函数 有什么 : 函数也是对象 函数有:prototype 对象 有什么 对象:__proto__ 原型对象里面 ...
最新文章
- JAVA多线程提高十四: 面试题
- junit4 javaee 5.0 jpa SSH 单元测试问题集锦
- 只显示隐藏文件 显示指定目录下的目录
- 2013年最值得我们学习的网页作品示例【系列六】
- 小米android系统耗电量大,小米手机耗电快的解决方法,亲测有效~
- 为什么要使用反射机制
- GDPR到底是如何影响机器学习的?
- android 表情,软键盘冲突解决方案(仿微博等SNS应用)
- 用python和sympy库解决方程组问题_Python语言 SymPy库数学方程问题——线性方程组篇...
- java nio 连接数_Java NIO 基础一 NIO概念
- MySQL命令行导入导出sql文件
- 改进后的日志类CLogger
- JAVA:获得当前执行路径的办法
- 具体化和实例化的应用
- 【Java核心技术卷】谈谈对Java平台的理解
- M6(面试)-01-牛客网Java面试题集锦
- cartographer基于3d地图的纯定位模式
- PIC单片机-Mplab的使用与实践
- cdd matlab 算法,CDD图像修复
- 1、4表格细线边框合并