PHP_面向对象教程(强力推荐)

5星(超过95%的资源)
所需积分/C币:9 2012-07-23 16:46:16 6.35MB PDF
16
收藏 收藏
举报

LAMP大讲堂 PHP面向对象技术 (全面讲解) LAMP大讲堂 PHP面向对象技术(全面讲解) 作者:高洛峰 本部分一共包括以下一些技术点: 1.面向对象的概念 2.什么是类,什么是对象,类和对象之间的关系 3.什么是面向对象编程呢? 4.如何抽象出一个类? 5.如何实例化对象? 6.如何去使用对象中的成员? 7.特殊的引用“$this”的使用 8.构造方法与析构方法 9.封装性 10.__set()、__get()、__isset()、__unset()四个方法的应用 11.类的继承 12.多态的应用
LAMP大讲堂PHP面向对象技术(全面讲解) 属性,像上面我们看到的,人的姓名、性别、年龄、身高、体重、电话、家庭住址等等。动态上也 就是人的这个对象的功能,比如这个人可以开车,会说英语,可以使用电脑等等,抽象成程序时, 我们把动态的写成函数或者说是方法,函数和方法是一样的。所以,所有类都是从属性和方法这两 方面去写,属性又叫做这个类的成员属性,方法叫做这个类的成员方法 c1ass人 成员属性:姓名、性别、年龄、身高、体重、电话、家庭住址 成员方法:可以开车,会说英语,可以使用电脑 属性: 通过在类定义中使用关键字"var"来声明变量,即创建了类的属性,虽然在声明成员属性 的时候可以给定初始值,但是在声明类的时候给成员属性初始值是没有必要的,比如说要 是把人的姓名赋上“张三”,那么用这个类实例出几十个人,这几十个人都叫张三了,所以 没有必要,我们在实例出对象后给成员属性初始值就可以了。 如:var$ somevar 方法(成员函数): 通过在类定义中声明函数,即创建了类的方法 如: function some fun(参数列表) 下面是人的成员属性 人的名字 人的性别 人的年龄 下面是人的成员方法 这个人可以说话的方法 这个人在说话 这个人可以走路的方法 这个人在走路 上面就是一个类的声明,从属性和方法上声明出来的一个类,但是成员属性最好在声明的时候 不要给初始的值,因为我们做的人这个类是一个描述信息,将米用它实例化对象,比如实例化出米 10个人对象,那么这10个人,每一个人的名字、性别、年龄都是不一样的,所以最好不要在这个 地方给成员属性赋初值,而是对每个对象分別赋值的。 用同样的办法可以做出你想要的类了,只要你能用属性和方法能描述岀来的实体都可以定义成 类,去实例化对象 为了加强你对类的理解,我们再做一个类,做一个形状的类,形状的范围广了点,我们就做个 矩形吧,先分析一下,想一想从两方面分析,矩形的属性都有什么?矩形的功能都有什么? class矩形 网站: 投稿 《》 LAMP大讲堂PHP面向对象技术(全面讲解) //知形的属性 矩形的长; 矩形的宽; /矩形的方法 矩形的周长; 矩形的面积 计算矩形的周长; 计算矩形的面积: 如果用这个类来创建出多个矩形对象,每个矩形对象都有自己的长和宽,都可以求出自己的周 长和面积了 类的声明我们就到这里吧!! 5如何实例化对象 我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类 会声明了,下一步就是实例化对象了。 当定义好类后,我们使用new关键字来生成一个对象。 $对象名称=new类名称(); 下面是人的成员属性 人的名字 人的性别 人的年龄 下面是人的成员方法 这个人可以说话的方法 这个人在说话 这个人可以走路的方法 这个人在走路 网站: 投稿 《》 LAMP大讲堂PHP面向对象技术(全面讲解) 这条代码就是通过类产生实例对象的过程,$Ⅰ就是我们实例出米的对象名称,同理,$p2,$p3 也是我们实例出来的对象名称,一个类可以实例出多个对象,每个对象都是独立的,上面的代码相 当于实例出来3个人来,每个人之间是没有联系的,只能说明他们都是人类,每个人都有自己的姓 名,性别和年龄的属性,每个人都冇说话和走路的方法,只要是类里面体现岀来的成员属性和成员 方法,实例化出来的对象里面就包含了这些属性和方法。 对像在PHP里面和整型、浮点型一样,也是一种数据类,都是存储不同类型数据用的,在运行 的时候都要加载到内存中去用,那么对象在内存里面是怎么体现的呢?内存从逻辑上说大体上是 分为4段,栈空间段、堆空间段、代码段、初始化静态段,程序里面不同的声明放在不同的内有段 里面,栈空间段是存储占用相同空间长度并且占用空河小的数据类型的地方,比如说整型1,10, 100,1000,10000,1000等等,在内存里面占用空间是等长的,都是64位4个字节。那么数据 长度不定长,而且占有空间很大的数据类型的数据放在那内存的那个段里面呢?这样的数据是放在 堆内存里面的。栈内存是可以直接存取的,而堆内存是不可以直接存取的内存。对于我们的对象米 数就是一种大的数据类型而且是占用空间不定长的类型,所以说对象是放在堆里面的,但对象名称 是放在栈里面的,这样通过对象名称就可以使用对象了。 pI new Person ( 对于这个条代码,8p1是对象名称在栈内存里面, new Person0是真正的对象是在堆内存里亩 的,具体的请看下图 Spl=nam PersonO 栈内存ea0 堆内存 P1[0x9000 mer Persen O 0x9000 Sp3[0x7000 0x000 从上图可以看出$p1= new Person(;等号右边是真的对象实例,在堆内存里面的实体,上图 共有3次 new Person(,所以会在堆里面开辟3个空间,产生3个实例对象,每个对象之间都是相 互独立的,使用自己的空间,在PP里面,只要有一个new这个关键字出现就会实例化出来一个对 象,在堆里面开辟一块自口的空间。 每个在堆里面的实例对象是存储属性的,比如说,现在堆里面的实例对象里面都存有姓名、性 别和年龄。每个属性又都有一个地址。 $pl= new Person C;等号的右边$1是一个引用变量,通过赋值运算符“=”把对象的首地址赋 给“$1”这个引用变量,所以$p1是存储对象首地址的变量,$p1放在栈内存里边,$p1相当于 个指针指向堆里面的对象,所以我们可以通过$pl这个引用变量来操作对象,通常我们也称对象引用 为对象 6.如何去使用对象中的成员 上面看到对象中的成员有两种一种是成员属性,一和是成员方法。对象我们以经可以声明 ,$pl-= new Person();怎么去使用对象的成员呢?要想访问对象中的成员就要使用一个特殊的操 作符“”来完成对象成员的访问 网站: 投稿 《》 LAMP大讲堂PHP面向对象技术(全面讲解) 对象属性 对象方法 如下面实例 下面是人的成员属性 人的名字 人的性别 人的年龄 下面是人的成员方法 这个人可以说话的方法 这个人在说话 这个人可以走路的方法 这个人在走路 创建实例对象 创建实例对象 创建实例对象 下面三行是给对象属性赋值 张 男 下面三行是访问对象的属性 对象的名字是:” 对象的性别是 “对象的年龄是:” 下面两行访问对象中的方法 下面三行是给对象属性赋值 ”李四 女” 下三行是访问对象的属性 “对象的名字是 “对象的性别是 “对象的年龄是:” 下面两行访问对象中的方法 下面三行是给对象属性赋值 ”王五” 勇” 下面三行是访问对象的属性 对象的名字是 对象的性别是: 网站: 投稿 《》 LAMP大讲堂P面向对象技术(全面讲解) “对象的年龄是:” 下面两行访问对象中的方法 从上例中可以看出只是对象里面的成员就要使川对象属性、对象方法形式访问,再没有第 二种方法来访问对象屮的成员了 7.特殊的引用“$this”的使用 现在我们知道了如何访问对象中的成员,是通过“对象成员”的方式访问的这是在对象的外 部去访问对象中成员的形式,那么如果我想在对象的内部,让对象里的方法访问本对象的属性,或 是对象中的方法去调川本对象的其它方法这时我们怎么办?因为对象里向的所有的成员都要川对 象来调用,包括对象的内部成员之间的调用,所以在里面给我提供了一个本对象的引用, 每个对象里面都有一个对象的引用来代表这个对象,完成对象内部成员的调用的本意就是 “这个”的意思,上面的实例里面,我们实例化三个实例对象 ,这三个对象里向各 自存在一个分别代表对象、、。 Spl=new Person0; Sp3-mew Persono: $p3 Sname name Sname ex Ithis Sage sthis sayre yO方法 sav0方 rum0方法 run0方法 通过上图我们可以看到,就是对象内部代表这个对象的引用,在对象内部和调用木对象的 成员和对象外部调用对象的成员所使用的方式是一样的。 属性 方法 修改一下上面的实例,让每个人都说出自己的名字,性別和年龄: 卜面是人的成员属性 人的名字 人的性别 人的年龄 下面是人的成员方法 这个人可以说话的方法 我的名字叫: 性别: 我的年龄是 这个人可以走路的方法 这个人在走路 创建实例对象 创建实例对象 网站: 投稿 《》 LAMP大讲堂PHP面向对象技术(全面讲解) 创建实例对象 下面三行是给对象属性赋值 张三 男 下面访问对象中的说话方法 下面三行是给对象属性赋值 李四 女 下面访问对象中的说话方法 下面三行是给对象属性赋值 王五 男 下面访问对象中的说话方法 输出结果为: 我的名字叫:张三性别:男我的年龄是: 我的名字叫:李四性别:女我的年龄是 我的名字叫:工五性别:男我的年龄是: 分析一下这个方法: 个人可以说话的方法 我的名字叫: 性别: 我的年龄是: 在$1、$p2和$3这三个对象中都有say()这个方法,$this分别代表这三个对象,调用相应 的属性,打印出属性的值,这就是在对象内部访问对象属性的方式,如果相在say(这个方法里调 用run(这个方法也是可以的,在say(这个方法中使用$this-runO的方式来完成调用 8.构造方法与析构方法 大多数类都冇一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也 就是使用这个关键字来实例化对象的时候自动调用构造方法。 构造函数的声明与其它操作的声明一样,只是其名称必须是 。这是 中的变化, 以前的版本中,构造函数的名称必须与类名相同,这种在中仍然可以用,但现在以经很少有 人用了,这样做的好处是可以使构造函数独立于类名,当类名发生改变时不需要改相应的构造函数 名称了。为了向下兼谷,如果一个类中没有名为 的方法, 将搜索一个中的写 法与类名相同名的构造方法 格式: 参数 在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构造方法, 不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务。比如对成属性在创建对象的 候赋初值。 创建一个人类 网站: 投稿 《》 LAMP大讲堂PHP面向对象技术(全面讲解) 下面是人的成员属性 人的名字 人的性别 人的年龄 定义一个构造方法参数为姓名 、性别和年龄 通过构造方法传进来的给成员属性 赋初使值 通过构造方法传进来的给成员属性 赋初使值 通过构造方法传进来的给成员属性 赋初使值 这个人的说话方法 我的名字叫: 性别: 我的年龄是: 通过构造方法创建个对象、、分别传入三个不同的实参为姓名、性别和年龄 “张 男” “李四”,”女” “王五”,”男” 面访问对象中的说话方法 下面访问对象中的说话方法 下面访问对象中的说话方法 输出结果为: 我的名字叫:张三性别:男我的年龄是: 我的名字叫:李四性别:女我的年龄是: 我的名字叫:王五性别:男我的年龄是 如图 5p1= e Person(”张三”,’男’,20); 栈内存 Parson(”李四”,”女 堆内存 Sp3= new person(“王五”,’男’,40) sP10x9000 成张三可0x9000 sr30x7000 ex/“男” Lge se人h0x7000 网站: 投稿 《》 LAMP大讲堂PHP面向对象技术(全面讲解) 析构函数: 与构造函数相对的就是析构函数。析构函数是新添加的内容,在 中没有析构函数。 析枃函数允许在销毁一个类之前执行的些操作或完成一些功能,比如说关闭文件,释放结果集 析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,也就是对象在内存 被销毁前调用析构函数。与构造函数的名称类似,一个类的析构函数名称必须是 。析构 函数不能带有任何参数 格式 创建一个人类 下面是人的成员属性 人的名字 人的性别 人的年龄 定义个构造方法参数为姓名 性别和年龄 通过构造方法传进来的 给成员属性 赋初使值 通过构造方法传进來的给成员属性 赋初使值 通过构造方法传进来的给成员属性 赋初使值 这个人的说话方法 我的名字叫: 性别: 我的年龄是: 这是一个析构函数,在对象销毁前调用 “再见” 通过构造方法创建个对象 分别传入三个不同的实参为姓名、性别和年龄 “张三”,”男” “李四”,”女” “王五”,”男” 下面访问对象中的说话方法 下面访问对象中的说话方法 下面访问对象中的说话方法 输出结果为 我的名字叫:张三性别:男我的年龄是: 我的名字叫:李四性别:女我的年龄是: 我的名字叫:王五性别:男我的年龄是: 网站: 投稿 《》

...展开详情
试读 39P PHP_面向对象教程(强力推荐)
立即下载 身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
外脑特 刚开始学习,希望有用~
2015-12-24
回复
凨行者 书不错 扫码的还算清晰 好评
2015-11-23
回复
hua8881980 还不错,值得一看
2015-05-28
回复
loopjn 感觉好很得教科书一样。
2014-08-10
回复
fengzhicaixi 这个讲解的很好,而且很全面,挺不错的!对我很有帮助!
2013-09-30
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
PHP_面向对象教程(强力推荐) 9积分/C币 立即下载
1/39
PHP_面向对象教程(强力推荐)第1页
PHP_面向对象教程(强力推荐)第2页
PHP_面向对象教程(强力推荐)第3页
PHP_面向对象教程(强力推荐)第4页
PHP_面向对象教程(强力推荐)第5页
PHP_面向对象教程(强力推荐)第6页
PHP_面向对象教程(强力推荐)第7页
PHP_面向对象教程(强力推荐)第8页

试读结束, 可继续读4页

9积分/C币 立即下载