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 相关文章推荐
php 面试碰到过的问题 在此做下记录
Jun 09 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
php/js获取客户端mac地址的实现代码
Jul 08 PHP
php解析json数据实例
Aug 19 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
PHP生成不重复标识符的方法
Nov 21 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
Nov 29 PHP
php自动加载方式集合
Apr 04 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
Laravel框架表单验证操作实例分析
Sep 30 PHP
Thinkphp页面跳转设置跳转等待时间的操作
Oct 16 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 26 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实现短域名互转
2013/07/05 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
Yii2.0 RESTful API 基础配置教程详解
2018/12/26 PHP
DWZ table的原生分页浅谈
2013/03/01 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
python中类的一些方法分析
2014/09/25 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
英国最大的海报商店:GB Posters
2018/03/20 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
新闻专业本科生的自我评价分享
2013/11/20 职场文书
小学门卫岗位职责
2013/12/17 职场文书
优秀民警事迹材料
2014/01/29 职场文书
市级文明单位申报材料
2014/05/07 职场文书
小学生春游活动方案
2014/08/20 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
Python Django模型详解
2021/10/05 Python