没有合适的资源?快使用搜索试试~ 我知道了~
PHP_面向对象教程(强力推荐).pdf
5星 · 超过95%的资源 需积分: 10 10 下载量 34 浏览量
2013-02-04
02:41:19
上传
评论 1
收藏 6.35MB PDF 举报
温馨提示
试读
39页
面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程 架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件工程的三个目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收 信息、处理数据和向其它对象发送信息。面向对象一直是软件开发领域内比较热门的话题,首先, 面向对象符合人类看待事物的一般规律。
资源推荐
资源详情
资源评论
LAMP 大讲堂 PHP 面向对象技术(全面讲解)
网站:http://www.phpchina.com 投稿:phper@phpchina.com 《PHPer》
65
/10
4
LAMP 大讲堂
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.把对象串行化
22.抽象方法和抽象类
23.php5 接口技术
1.面向对象的概念
面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程
架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP
达到了软件工程的三个目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收
信息、处理数据和向其它对象发送信息。面向对象一直是软件开发领域内比较热门的话题,首先,
面向对象符合人类看待事物的一般规律。其次,采用面向对象方法可以使系统各部分各司其职、各
尽所能。为编程人员敞开了一扇大门,使其编程的代码更简洁、更易于维护,并且具有更强的可重
用性。有人说 PHP 不是一个真正的面向对象的语言,这是事实。PHP 是一个混合型语言,你可以使
用 OOP,也可以使用传统的过程化编程。然而,对于大型项目,你可能需要在 PHP 中使用纯的 OOP
去声明类,而且在你的项目里只用对象和类。这个概念我先不多说了,因为有很多朋友远离面向对
象编程的主要原因就是一接触面向对象概念的时候就理解不上去, 所以就不想去学下去了。等读
者看完整篇内容后再去把概念搞明白吧。
2.什么是类,什么是对象,类和对象之间的关系
类的概念:类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一
的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立的程
序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。
LAMP 大讲堂 PHP 面向对象技术(全面讲解)
网站:http://www.phpchina.com 投稿:phper@phpchina.com 《PHPer》
66
/10
4
对象的概念:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一
个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象的角度来说,对象是问题域或
实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属
性和有权对这些属性进行操作的一组服务的封装体。客观世界是由对象和对象之间的联系组成的。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是
类。类描述了一组有相同特性(属性)和相同行为(方法)的对象。
上面大概就是它们的定义吧,也许你是刚接触面向对象的朋友, 不要被概念的东西搞晕了,给
你举个例子吧,如果你去中关村想买几台组装的 PC 机,到了那里你第一步要干什么,是不是装机
的工程师和你坐在一起,按你提供的信息和你一起完成一个装机的配置单呀,这个配置单就可以想
象成是类,它就是一张纸,但是它上面记录了你要买的 PC 机的信息,如果用这个配置单买 10 台机
器,那么这 10 台机子,都是按这个配置单组成的,所以说这 10 台机子是一个类型的,也可以说是
一类的。那么什么是对象呢,类的实例化结果就是对象,用这个配置单配置出来(实例化出来)的
机子就是对象,是我们可以操作的实体,10 台机子,10 个对象。每台机子都是独立的,只能说明
他们是同一类的,对其中一个机做任何动作都不会影响其它 9 台机器,但是我对类修改,也就是在
这个配置单上加一个或少一个配件,那么装出来的 9 个机子都改变了,这是类和对象的关系(类的
实例化结果就是对象)。
3.什么是面向对象编程呢?
就不说他的概念,如果你想建立一个电脑教室,首先要有一个房间, 房间里面要有 N 台电脑,
有 N 张桌子, N 把椅子, 白板, 投影机等等,这些是什么,刚才咱们说了,这就是对象,能看
到的一个个的实体,可以说这个电脑教室的单位就是这一个个的实体对象, 它们共同组成了这个
电脑教室,那么我们是做程序,这和面向对象有什么关系呢?开发一个系统程序和建一个电脑教室
类似,你把每个独立的功能模块抽象成类,形成对象,由多个对象组成这个系统,这些对象之间都
能够接收信息、处理数据和向其它对象发送信息等等相互作用。就构成了面向对象的程序。
4.如何抽象出一个类?
上面已经介绍过了,面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以
我们首先要做的就是如何来声明类,做出来一个类很容易,只要掌握基本的程序语法定义规则就可
以做的出来,那么难点在那里呢?一个项目要用到多少个类,用多少个对象,在那要定义类,定义
一个什么样的类,这个类实例化出多少个对象,类里面有多少个属性,有多少个方法等等,这就需
要读者通过在实际的开发中就实际问题分析设计和总结了。
类的定义:
class 类名{
}
使用一个关键字 class 和后面加上一个你想要的类名以及加上一对大括号, 这样一个类的结构
就定义出来了,只要在里面写代码就可以了,但是里面写什么?能写什么?怎样写才是一个完整的
类呢?上面讲过来,使用类是为了让它实例出对象来给我们用,这就要知道你想要的是什么样的对
象了,像上面我们讲的一个装机配置单上写什么,你装出来的机子就有什么。比如说,一个人就是
一个对象,你怎么把一个你看好的人推荐给你们领导呢?当然是越详细越好了:
首先,你会介绍这个人姓名、性别、年龄、身高、体重、电话、家庭住址等等。
然后,你要介绍这个人能做什么,可以开车,会说英语,可以使用电脑等等。
只要你介绍多一点,别人对这个人就多一点了解,这就是我们对一个人的描述, 现在我们总结
一下,所有的对象我们用类去描述都是类似的,从上面人的描述可以看到, 做出一个类来,从定
义的角度分两部分,第一是从静态上描述,第二是从动态上描述, 静态上的描述就是我们所说的
LAMP 大讲堂 PHP 面向对象技术(全面讲解)
网站:http://www.phpchina.com 投稿:phper@phpchina.com 《PHPer》
67
/10
4
属性,像上面我们看到的,人的姓名、性别、年龄、身高、体重、电话、家庭住址等等。动态上也
就是人的这个对象的功能,比如这个人可以开车,会说英语,可以使用电脑等等,抽象成程序时,
我们把动态的写成函数或者说是方法,函数和方法是一样的。所以,所有类都是从属性和方法这两
方面去写, 属性又叫做这个类的成员属性,方法叫做这个类的成员方法。
class 人{
成员属性:姓名、性别、年龄、身高、体重、电话、家庭住址
成员方法:可以开车, 会说英语, 可以使用电脑
}
属性:
通过在类定义中使用关键字" var "来声明变量,即创建了类的属性,虽然在声明成员属性
的时候可以给定初始值, 但是在声明类的时候给成员属性初始值是没有必要的,比如说要
是把人的姓名赋上“张三”,那么用这个类实例出几十个人,这几十个人都叫张三了,所以
没有必要, 我们在实例出对象后给成员属性初始值就可以了。
如: var $somevar;
方法(成员函数):
通过在类定义中声明函数,即创建了类的方法。
如: function somefun(参数列表)
{ ... ... }
<?php
class Person
{
//下面是人的成员属性
var $name; //人的名字
var $sex; //人的性别
var $age; //人的年龄
//下面是人的成员方法
function say() //这个人可以说话的方法
{
echo "这个人在说话";
}
function run() //这个人可以走路的方法
{
echo "这个人在走路";
}
}
?>
上面就是一个类的声明,从属性和方法上声明出来的一个类,但是成员属性最好在声明的时候
不要给初始的值,因为我们做的人这个类是一个描述信息,将来用它实例化对象,比如实例化出来
10 个人对象,那么这 10 个人, 每一个人的名字、性别、年龄都是不一样的,所以最好不要在这个
地方给成员属性赋初值,而是对每个对象分别赋值的。
用同样的办法可以做出你想要的类了,只要你能用属性和方法能描述出来的实体都可以定义成
类,去实例化对象。
为了加强你对类的理解,我们再做一个类,做一个形状的类,形状的范围广了点, 我们就做个
矩形吧,先分析一下,想一想从两方面分析,矩形的属性都有什么?矩形的功能都有什么?
class 矩形
LAMP 大讲堂 PHP 面向对象技术(全面讲解)
网站:http://www.phpchina.com 投稿:phper@phpchina.com 《PHPer》
68
/10
4
{
//矩形的属性
矩形的长;
矩形的宽;
//矩形的方法
矩形的周长;
矩形的面积;
}
<?php
class Rect
{
var $kuan;
var $gao;
function zhouChang()
{
计算矩形的周长;
}
function mianJi()
{
计算矩形的面积;
}
}
?>
如果用这个类来创建出多个矩形对象,每个矩形对象都有自己的长和宽, 都可以求出自己的周
长和面积了。
类的声明我们就到这里吧!!
5.如何实例化对象
我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类
会声明了,下一步就是实例化对象了。
当定义好类后,我们使用 new 关键字来生成一个对象。
$对象名称 = new 类名称();
<?php
class Person
{
//下面是人的成员属性
var $name; //人的名字
var $sex; //人的性别
var $age; //人的年龄
//下面是人的成员方法
function say() //这个人可以说话的方法
{
echo "这个人在说话";
}
function run() //这个人可以走路的方法
{
echo "这个人在走路";
}
}
$p1=new Person();
$p2=new Person();
LAMP 大讲堂 PHP 面向对象技术(全面讲解)
网站:http://www.phpchina.com 投稿:phper@phpchina.com 《PHPer》
69
/10
4
$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()是真正的对象是在堆内存里面
的,具体的请看下图:
从上图可以看出$p1=new Person();等号右边是真正的对象实例,在堆内存里面的实体,上图一
共有 3 次 new Person(),所以会在堆里面开辟 3 个空间,产生 3 个实例对象,每个对象之间都是相
互独立的,使用自己的空间,在 PHP 里面,只要有一个 new 这个关键字出现就会实例化出来一个对
象,在堆里面开辟一块自己的空间。
每个在堆里面的实例对象是存储属性的,比如说,现在堆里面的实例对象里面都存有姓名、性
别和年龄。每个属性又都有一个地址。
$p1=new Person();等号的右边$p1 是一个引用变量,通过赋值运算符“=”把对象的首地址赋
给“$p1”这个引用变量,所以$p1 是存储对象首地址的变量,$p1 放在栈内存里边,$p1 相当于一
个指针指向堆里面的对象,所以我们可以通过$p1 这个引用变量来操作对象,通常我们也称对象引用
为对象。
6.如何去使用对象中的成员
上面看到 PHP 对象中的成员有两种一种是成员属性,一种是成员方法。对象我们以经可以声明
了,$p1=new Person();怎么去使用对象的成员呢?要想访问对象中的成员就要使用一个特殊的操
作符“->”来完成对象成员的访问:
剩余38页未读,继续阅读
资源评论
- ccazqyy2013-02-04强力推荐,对PHP面向对象的理解很有帮助!
xiaoquans6
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功