PHP对象Object的概念 介绍


Posted in PHP onJune 14, 2012

例如,员工管理应用程序可能包括一个EmPloyee 类。然后可以用这个类来创建和维护特定实例,比如Gonn和Sally。

根据预定义的类创建对象常称为类的实例化(class instantiation)。

对象使用new关键字创建,如下:

$employee = new Employee();

创建对象之后,这个刚实例化的对象就具有了类中定义的所有性质和行为。

如何实例化对象
面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了。当定义好类后,我们使用new关键字来生成一个对象。

class Person 
{ 
//下面是人的成员属性 
var $name; //人的名字 
var $sex; //人的性别 
var $age; //人的年龄 //下面是人的成员方法 
function say() //这个人可以说话的方法 
{ 
echo "这个人在说话"; 
} 
function run() //这个人可以走路的方法 
{ 
echo "这个人在走路"; 
} 
} 
$p1=new Person(); 
$p2=new Person(); 
$p3=new Person();

$p1=new Person();

这条代码就是通过类产生实例对象的过程,$p1就是我们实例出来的对象名称,同理,$p2, $p3也是我们实例出来的对象名称,一个类可以实例出多个对象,每个对象都是独立的,上面的代码相当于实例出来3个人来,每个人之间是没有联系的,只能说明他们都是人类,每个人都有自己的姓名,性别和年龄的属性,每个人都有说话和走路的方法,只要是类里面体现出来的成员属性和成员方法,实例化出来的对象里面就包含了这些属性和方法。

对像在PHP里面和整型、浮点型一样,也是一种数据类,都是存储不同类型数据用的,在运行的时候都要加载到内存中去用, 那么对象在内存里面是怎么体现的呢?内存从罗辑上说大体上是分为4段, 栈空间段、堆空间段、代码段、 初始化静态段,程序里面不同的声明放在不同的内存段里面,栈空间段是存储占用相同空间长度并且占用空间小的数据类型的地方,比如说整型1, 10, 100, 1000, 10000, 100000等等,在内存里面占用空间是等长的,都是64位4个字节。 那么数据长度不定长,而且占有空间很大的数据类型的数据放在那内存的那个段里面呢?这样的数据是放在堆内存里面的。栈内存是可以直接存取的,而堆内存是不可以直接存取的内存。对于我们的对象来数就是一种大的数据类型而且是占用空间不定长的类型,所以说对象是放在堆里面的,但对象名称是放在栈里面的,这样通过对象名称就可以使用对象了。

$p1=new Person(); 对于这个条代码, $p1是对象名称在栈内存里面,new Person()是真正的对象是在堆内存里面的。

等号右边是真正的对象实例,在堆内存里面的实体。这里一共有3次new Person(),所以会在堆里面开辟3个空间,产生3个实例对象,每个对象之间都是相互独立的,使用自己的空间,在PHP里面,只要有一个new这个关键字出现就会实例化出来一个对象,在堆里面开辟一块自己的空间。

每个在堆里面的实例对象是存储属性的,比如说,现在堆里面的实例对象里面都存有姓名、性别和年龄。每个属性又都有一个地址。$p1=new Person();等号的右边$p1是一个引用变量,通过赋值运算符“=”把对象的首地址赋给“$p1”这个引用变量,所以$p1是存储对象首地址的变量,$p1放在栈内存里边,$p1相当于一个指针指向堆里面的对象,所以我们可以通过$p1这个引用变量来操作对象,通常我们也称对象引用为对象。

PHP 相关文章推荐
BBS(php & mysql)完整版(三)
Oct 09 PHP
php csv操作类代码
Dec 14 PHP
PHP运行时强制显示出错信息的代码
Apr 20 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
php中explode的负数limit用法分析
Feb 27 PHP
PHP register_shutdown_function()函数的使用示例
Jun 23 PHP
php经典算法集锦
Nov 14 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
Yii框架上传图片用法总结
Mar 28 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
深入了解PHP类Class的概念
Jun 14 #PHP
让PHP更快的提供文件下载的代码
Jun 13 #PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 #PHP
header中Content-Disposition的作用与使用方法
Jun 13 #PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
Jun 13 #PHP
Php中文件下载功能实现超详细流程分析
Jun 13 #PHP
php异常处理技术,顶级异常处理器
Jun 13 #PHP
You might like
优化php效率,提高php性能的一些方法
2011/03/24 PHP
php 带逗号千位符数字的处理方法
2012/01/10 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
js生成的验证码的实现与技术分析
2014/09/17 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
如何使用bootstrap框架 bootstrap入门必看!
2017/04/13 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
js读取本地文件的实例
2017/12/22 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
js里面的变量范围分享
2020/07/18 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
自考毕业生自我鉴定
2013/11/04 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
医院科室评语
2015/01/04 职场文书
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
keepalived + nginx 实现高可用方案
2022/12/24 Servers