php5面向对象详解

上传人:飞*** 文档编号:35819242 上传时间:2018-03-20 格式:DOC 页数:47 大小:348KB
返回 下载 相关 举报
php5面向对象详解_第1页
第1页 / 共47页
php5面向对象详解_第2页
第2页 / 共47页
php5面向对象详解_第3页
第3页 / 共47页
php5面向对象详解_第4页
第4页 / 共47页
php5面向对象详解_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《php5面向对象详解》由会员分享,可在线阅读,更多相关《php5面向对象详解(47页珍藏版)》请在金锄头文库上搜索。

1、PHP 面向对象技术(全面讲解)(高洛峰)本部分一共包括以下一些技术点:1.面象对象的概念2.什么是类, 什么是对象, 类和对象这间的关系3.什么是面向对象编程呢?4.如何抽象出一个类?5.如何实例化对象6.如何去使用对象中的成员7.特殊的引用“$this“的使用8.构造方法与析构方法9.封装性10._set() _get() _isset() _unset()四个方法的应用11.类的继函12.多态的应用13.重载新的方法14.访问类型15.静态成员的使用16.final 关键字的应用17._toString()方法18.克隆对象19._call 处理调用错误20.自动加载类21.把对象串行化

2、22.抽象方法和抽象类23.php5 接口技术1.面象对象的概念面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编 程架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成, OOP 达到了软件工程的三个目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能 够接收信息、处理数据和向其它对象发送信息。面向对象一直是软件开发领域内比较热门的话题, 首先,面向对象符合人类看待事物的一般规律。其次,采用面向对象方法可以使系统各部分各司 其职、各尽所能。为编程人员敞开了一扇大门,使其编程的代码更简洁、

3、更易于维护,并且具有 更强的可重用性。有人说 PHP 不是一个真正的面向对象的语言,这是事实。PHP 是一个混合型语 言,你可以使用 OOP,也可以使用传统的过程化编程。然而,对于大型项目,你可能需要在 PHP 中使用纯的 OOP 去声明类,而且在你的项目里只用对象和类。这个概念我先不多说了,因为有很 多人朋友远离面向对象编程的主要原因就是一接触面向对象概念的时候就理解不上去, 所以就 不想去学下去了. 等读者看完整体内容后再去把概念搞明白吧。2.什么是类, 什么是对象, 类和对象这间的关系类的概念:类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统 一的抽象描述,其内部包

4、括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立 的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。 对象的概念:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。 一个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象的角度来说,对象是问题 域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是 一组属性和有权对这些属性进行操作的一组服务的封装体。客观世界是由对象和对象之间的联系 组成的。 类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就 是类.类描述了一组有相同特性(属性)

5、和相同行为(方法)的对象。上面大概就是它们的定义吧, 也许你是刚接触面象对象的朋友, 不要被概念的东西搞晕了,给你举个列子吧,如果你去中关村想买几台组装的 PC 机,到了那里你第一步要干什么, 是不 是装机的工程师和你坐在一起,按你提供的信息和你一起完成一个装机的配置单呀, 这个配置 单就可以想像成是类,它就是一张纸,但是它上面记录了你要买的 PC 机的信息,如果用这个配 置单买 10 台机器,那么这 10 台机子,都是按这个配置单组成的,所以说这 10 台机子是一个类型的,也可以说是一类的。那么什么是对象呢,类的实例化结果就是对象, 用这个配置单配置出 来(实例化出来)的机子就是对象, 是我

6、们可以操作的实体, 10 台机子, 10 个对象。 每台 机子都是独立的,只能说明他们是同一类的,对其中一个机做任何动作都不会影响其它 9 台机器, 但是我对类修改, 也就是在这个配置单上加一个或少一个配件, 那么装出来的 9 个机子都改变 了, 这是类和对象的关系(类的实例化结果就是对象).3.什么是面向对象编程呢?就不说他的概念,如果你想建立一个电脑教室,首先要有一个房间, 房间里面要有 N 台电 脑,有 N 个桌子, N 个椅子, 白板, 投影机等等,这些是什么,刚才咱们说了, 这就是对象, 能看到的一个个的实体,可以说这个电脑教室的单位就是这一个个的实体对象, 它们共同组成 了这个电脑

7、教室,那么我们是做程序,这和面向对象有什么关系呢?开发一个系统程序和建一个 电脑教室类似,你把每个独立的功能模块抽象成类形成对象,由多个对象组成这个系统,这些对象之间都能够接收信息、处理数据和向其它对象发送信息等等相互作用。就构成了面向对象的程序。4.如何抽象出一个类?上面已经介绍过了, 面向对象程序的单位就是对象,但对象又是通过类的实例化出来的, 所以我们首先要做的就是如何来声明类, 做出来一个类很容易,只要掌握基本的程序语法定义 规则就可以做的出来,那么难点在那里呢? 一个项目要用到多少个类,用多少个对象, 在那要 定义类,定义一个什么样的类,这个类实例化出多少个对象, 类里面有多少个属性

8、, 有多少个 方法等等,这就需要读者通过在实际的开发中就实际问题分析设计和总结了。类的定义:class 类名使用一个关键字 class 和后面加上一个你想要的类名以及加上一对大括号, 这样一个类的 结构就定义出来了,只要在里面写代码就可以了, 但是里面写什么? 能写什么?怎样写才是一 个完整的类呢?上面讲过来,使用类是为了让它实例出对象来给我们用, 这就要知道你想要的 是什么样的对象了,像上面我们讲的一个装机配置单上写什么,你装出来的机子就有什么。比如 说,一个人就是一个对象,你怎么把一个你看好的人推荐给你们领导呢?当然是越详细越好了:首先, 你会介绍这个人姓名、性别、年龄、身高、体重、电话、

9、家庭住址等等。然后,你要介绍这个人能做什么, 可以开车, 会说英语, 可以使用电脑等等。只要你介绍多一点, 别人对这个人就多一点了解, 这就是我们对一个人的描述, 现在我 们总结一下,所有的对象我们用类去描述都是类似的, 从上面人的描述可以看到, 做出一个类 来, 从定义的角度分两部分, 第一是从静态上描述, 第二是从动态上描述, 静态上的描述就 是我们所说的属性, 像上面我们看到的,人的姓名、性别、年龄、身高、体重、电话、家庭住址等等。 动态上也就是人的这个对象的功能,比如这个人可以开车, 会说英语, 可以使用电 脑等等,抽象成程序时,我们把动态的写成函数或者说是方法,函数和方法是一样的。所

10、以,所 有类都是从属性和方法这两方面去写, 属性又叫做这个类的成员属性,方法叫做这个类的成员 方法。class 人成员属性:姓名、性别、年龄、身高、体重、电话、家庭住址成员方法:可以开车, 会说英语, 可以使用电脑属性: 通过在类定义中使用关键字“ var “来声明变量,即创建了类的属性,虽然在声明成员 属性的时候可以给定初值, 但是在声明类的时候给成员属性初使值是没有必要的,比 如说要是把人的姓名赋上“张三”,那么用这个类实例出几十个人,这几十个人都叫张 三了,所以没有必要, 我们在实例出对象后给成员属性初使值就可以了。 如: var $somevar; 方法(成员函数): 通过在类定义中声

11、明函数,即创建了类的方法。 如: function somefun(参数列表) . . 上面就是一个类的声明, 从属性和方法上声明出来的一个类, 但是成员属性最好在声明的 时候不要给初使的值, 因为我们做的人这个类是一个描述信息, 将来用它实例化对象, 比如 实例化出来 10 个人对象, 那么这 10 个人, 每一个人的名子, 性别, 年龄都是不一样的, 所以最好不要在这个地方给成员属性赋初值, 而是对每个对象分别赋值的。 用同样的办法可以做出你想要的类了, 只要你能用属性和方法能描述出来的实体都可以定 义成类, 去实例化对象。 为了加强你对类的理解, 我们再做一个类, 做一个形状的类, 形状

12、的范围广了点, 我们 就做个矩形吧, 先分析一下, 想一想从两方面分析,矩形的属性都有什么? 矩形的功能都有 什么?class 矩形/矩形的属性矩形的长; 矩形的宽;/矩形的方法矩形的周长;矩形的面积;如果用这个类来创建出多个矩形对象,每个矩形对象都有自己的长和宽, 都可以求出自己 的周长和面积了。 类的声明我们就到这里吧!5.如何实例化对象我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们 类会声明了,下一步就是实例化对象了。 当定义好类后,我们使用 new 关键字来生成一个对象。$对象名称 = new 类名称() ;$p1=new Person(); 这条代码

13、就是通过类产生实例对象的过程,$p1 就是我们实例出来的对象名称, 同理,$p2, $p3 也是我们实例出来的对象名称,一个类可以实例出多个对象,每个对象都是独立的,上面的 代码相当于实例出来 3 个人来, 每个人之间是没有联系的, 只能说明他们都是人类, 每个人 都有自己的姓名, 性别和年龄的属性,每个人都有说话和走路的方法,只要是类里面体现出来 的成员属性和成员方法,实例化出来的对象里面就包含了这些属性和方法。 对像在 PHP 里面和整型、浮点型一样,也是一种数据类,都是存储不同类型数据用的,在运 行的时候都要加载到内存中去用, 那么对象在内存里面是怎么体现的呢?内存从罗辑上说大体 上是分

14、为 4 段, 栈空间段, 堆空间段,代码段, 初使化静态段,程序里面不同的声明放在不 同的内存段里面,栈空间段是存储占用相同空间长度并且占用空间小的数据类型的地方,比如说 整型 1, 10, 100, 1000, 10000, 100000 等等,在内存里面占用空间是等长的,都是 64 位 4 个字节。 那么数据长度不定长,而且占有空间很大的数据类型的数据放在那内存的那个段 里面呢?这样的数据是放在堆内存里面的。栈内存是可以直接存取的,而堆内存是不可以直接存取的内存。对于我们的对象来数就是一种大的数据类型而且是占用空间不定长的类型,所以说对 象是放在堆里面的,但对象名称是放在栈里面的,这样通过

15、对象名称就可以使用对象了。 $p1=new Person();对于这个条代码, $p1 是对象名称在栈内存里面,new Person()是真正的对象是在堆内存里面的,具体的请看下图:从上图可以看出$p1=new Person();等号右边是真正的对象实例, 在堆内存里面的实体,上图一共有 3 次new Person(),所以会在堆里面开辟 3 个空间,产生 3 个实例对象,每个对象之间都是相互独立的,使用自己的空间,在 PHP 里面,只要有一个 new 这个关键字出现就会实例化出来一个对象,在堆里面开辟一块自己的空间.每个在堆里面的实例对象是存储属性的,比如说,现在堆里面的实例对象里面都存有姓

16、名、性别和年龄。每个属性又都有一个地址。$p1=new Person();等号的右边$p1 是一个引用变量,通过赋值运算符“=”把对象的首地址赋给“$p1“这个引用变量, 所以$p1 是存储对象首地址的变量,$p1 放在栈内存里边,$p1 相当于一个指针指向堆里面的对象,所以我们可以通过$p1 这个引用变量来操作对象, 通常我们也称对象引用为对象。6.如何去使用对象中的成员如何去使用对象中的成员上面看到 PHP 对象中的成员有两种一种是成员属性, 一种是成员方法。对象我们以经可以 声明了,$p1=new Person(); 怎么去使用对象的成员呢?要想访问对象中的成员就要使用一个特 殊的操作符”-”来完成对象成员的访问: 对象-属性 $p1-name;$p2-age; $p3-sex; 对象-方法 $p1-say();$p2-run(); 如下面实例:name=”张三”; $p1-sex=”男”;$p1-age=20;/下面三行是访问$p1 对象的属性echo “p1 对象的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 项目/工程管理

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号