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 相关文章推荐
新版mysql+apache+php Linux安装指南
Oct 09 PHP
PHP编程与应用
Oct 09 PHP
PHP读取目录下所有文件的代码
Jan 07 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
Nov 14 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
解析yii数据库的增删查改
Jun 20 PHP
PHP加密扩展库Mcrypt安装和实例
Nov 10 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
May 10 PHP
支付宝服务窗API接口开发php版本
Jul 20 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
Oct 07 PHP
tp5.1 框架查询表达式用法详解
May 25 PHP
PHP7 字符串处理机制修改
Mar 09 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
用php实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
延长phpmyadmin登录时间的方法
2011/02/06 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
javascript中的float运算精度实例分析
2010/08/21 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
python先序遍历二叉树问题
2017/11/10 Python
python中abs&map&reduce简介
2018/02/20 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
pytorch标签转onehot形式实例
2020/01/02 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
生态学毕业生自荐信
2013/10/27 职场文书
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
单位未婚证明范本
2014/01/18 职场文书
战友聚会邀请函
2014/01/18 职场文书
小学生家长评语大全
2014/02/10 职场文书
创新比赛获奖感言
2014/02/13 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python
Redis性能监控的实现
2021/07/09 Redis