燕十八-PHP公益讲堂-php面向对象_第1页
燕十八-PHP公益讲堂-php面向对象_第2页
燕十八-PHP公益讲堂-php面向对象_第3页
燕十八-PHP公益讲堂-php面向对象_第4页
燕十八-PHP公益讲堂-php面向对象_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、zixue.it 燕十八 精品PHP教程,PHP面向对象,过程与对象的哲学 面向对象基础 面向对象进阶 高级类特性 异常处理 设计模式,1.1 过程与对象的哲学(1),面向过程方法认为: 每个小系统都有着明确的开始和明确的结束,开始和结束之间有着严谨的因果关系。 只要我们将这个小系统中的每一个步骤和影响这个小系统走向的所有因素都分析出来, 我们就能完全定义这个系统的行为 就是说:作为上帝,你创造着每一步,事无巨细.,zixue.it 燕十八,1.1 过程与对象的哲学(2),面向过程与机械唯物主义: 机械唯物主义认为,了解物质前一刻的运动状态,就可以推出下一刻的运动状态, 把整个宇宙的每一个粒子

2、的运动状态确定以后,就可以推出下一刻的运动状态, 其中一个著名的假设就是拉普拉斯假定: 如果有一个智能生物能确定从最大天体到最轻原子的运动的现时状态, 就能按照力学规律推算出整个宇宙的过去状态和未来状态。 后人把他所假定的智能生物称为拉普拉斯妖。按照这种假定, 宇宙中全部未来的事件都严格地取决于全部过去的事件,事件出现的不确定性或偶然性消失了.,zixue.it 燕十八,1.1 过程与对象的哲学(3),面向对象(Object Oriented,简称OO)方法: 将世界看作一个个相互独立的对象, 相互之间并无因果关系,它们平时是“鸡犬之声相闻,老死不相往来”的。 只有在某个外部力量的驱动下,对象

3、之间产生交互,而不同的对象有不同 的特点,因此交互产生不同的结果,这个结果,甚至上帝也猜不出来. 这些交互构成了这个生动世界的一个“过程”。 在没有外力的情况下,对象则保持着“静止”的状态。 就是说:上帝创建了每一物. 物与物之间再产生过程,上帝不管,zixue.it 燕十八,1.1 过程与对象的哲学(4),张三是一位普通人,别人早晨向他打招呼,他会说早上好,但有一天他被车撞了,脑子受了一些伤,因此,别人早晨向他打招呼时,他有时会说早上好,但有时会说晚上好,甚至辱骂对方.,zixue.it 燕十八,2.1 面向对象基础 之女娲造人,zixue.it 燕十八,2.2 面向对象基础 之类与对象,C

4、lass/Object:类(class)和对象(object)是面向对象方法的核心概 念。 类是对一类事物共性的总结,描述. 是抽象的、概念上的定义; 比如: 人类1颗头,2支胳膊,2条腿, 每个人有自己的身高,体重 有自己的名字 皮肤颜色黑白黄, 会哭 对象是实际存在的该类事物的每个个体,因而也称实例(instance)。 比如: 李开复,唐骏,奥巴马,zixue.it 燕十八,2.2 面向对象基础 之对象的抽象,对象归纳,抽象 得到了类 类是对象的归纳与抽象. 从对象中,我们归纳出来了什么?(类中有什么?) 有什么? 属性(身高,体重,姓名)能干什么? 功能(哭,笑,招呼,吃饭) 我们用变

5、量,函数来模拟属性与功能 变量-属性 函数-功能/方法,zixue.it 燕十八,2.3 面向对象基础 之声明类,声明类 每个类的定义都以关键字class开头,后面跟着类名。后面跟着一对花括号. class Class_name ,zixue.it 燕十八,2.4 面向对象基础 之对象属性与方法,属性: 用来描述对象的数据元素 属性值:可以为PHP的8种数据类型,找出人的属性?,方法: 用来描述对象的行为的函数,找出人的方法?,zixue.it 燕十八,2.5 面向对象基础 之声明属性与方法,声明属性与方法 class Class_name 修饰符 $属性名 = 属性值; 修饰符 functi

6、on 函数名() 注:修改符只可能是public,protected,private之一 后面会详述,zixue.it 燕十八,2.6 面向对象基础 之实例化对象,在女娲脑子中,有一个 设计好的样子. 女娲脑海中的构想,是类. 还要根据构想,利用黄土捏出人来,根据类创建一个具体对象, 这个过程,称为实例化,实例化语法: $obj = new className();,zixue.it 燕十八,2.7 面向对象基础 之构造函数,构造函数: 在new一个对象时,会被自动调用的函数 名称是固定的: _construct 析构函数:在对象销毁时,会被自动调用的函数 名称是固定的: _destruct

7、在类中, _开头的函数是又叫魔术函数,在写类的时候, 注意不要把函数命名为_开头,以免带来误会.,zixue.it 燕十八,2.8 面向对象基础 之$this是谁?,问问张三的合理体重? 公式:体重(公斤)身高厘米105,身高:174CM,public function goodWeight() return $this-wight -75; ,$this代表 其所在当前对象,zixue.it 燕十八,2.9 面向对象基础 之权限控制与封装性,zixue.it 燕十八,2.10 面向对象基础 之继承(1),人类: 身高 哭(),学生类: 身高 学号 哭() 学习(),律师类: 身高 领域: 哭

8、() 辩护(),zixue.it 燕十八,2.11 面向对象基础 之继承(2),人类: 身高 哭(),学生类: 学号 学习(),律师类: 领域: 辩护(),zixue.it 燕十八,子类 protected pulic,2.12 面向对象基础 之回头看protected,父类 private protected public,public,public,public,public,zixue.it 燕十八,2.13 面向对象基础 之继承时的权限变化,子类,外界,父类,private,protected,public,在继承的过程中, 子类对继承到的 属性和方法的权限, 只能越来越宽松, 不能越

9、来越严格,zixue.it 燕十八,2.14 面向对象基础 之继承的本质(1),人类: 身高 哭(),学生类: 学号 学习(),链式继承 子类只有子类的属性和方法, 当访问子类的不存在的属性时, 则到父类去找相应的属性和方法,$ming-height,zixue.it 燕十八,2.15 面向对象基础 之继承的本质(2),人类: 身高 哭(),学生类: 身高 学号 哭 学习(),复制继承 子类有子类的属性和方法, 并复制所有父类 允许继承的属性和方法,$ming-height,zixue.it 燕十八,2.16 面向对象基础 之继承 private与parent,private属性: 能被子类继

10、承,(但无权使用),parent关键字: parent:父类方法名() 调用父类的(同名)函数,且只能用来调用父类方法,不能调用 父类属性,zixue.it 燕十八,2.17 面向对象基础 之多态,家中常备多彩手电筒,红光手电筒,蓝光手电筒,绿光手电筒,黑光手电筒,为什么不买四块 颜色不同的玻璃, 而买4个灯呢? 答:手电灯买来时, 说明书上说的,只能接 收红/蓝/绿/黑玻璃,zixue.it 燕十八,无敌变幻多彩手电筒,手电筒,我家只有一把 普通手电筒, 但镜片可以换,2.17 面向对象基础 之多态,zixue.it 燕十八,白马,马也,乘白马,乘马也。骊马,马也,乘骊马,乘马也。 墨子*小

11、取,zixue.it 燕十八,2.7 面向对象基础 之类属性与方法,属性: 用来描述类的数据元素 属性值:可以为PHP的8种数据类型,找出人类的属性?,方法: 用来描述类的行为的函数,找出人类的方法?,zixue.it 燕十八,2.8 面向对象基础 之类属性与对象属性,张三有多高? 李四有多重? 王五皮肤有多黑?,人类有几颗头? 人类有几条腿? 人类哭时发出什么声音?,对象的属性,对象方法: 依赖于具体对象而存在,具体内容也和 具体对象有关. 而类属性,类方法: 和具体类相关,不依赖于具体对象而存在 在内存中只有一份(重要),zixue.it 燕十八,2.10 面向对象基础 之self是谁?,

12、问问人类有几颗头? 思考: 有必要创建一个人,再数一数他的头吗?,public function heads() return self:$head; ,self代表 当前类,zixue.it 燕十八,3.4 面向对象进阶 之单例模式,解决方案:单例模式 单例模式的关键点: 不允许外部通过new得到实例 提供一个统一接口返回实例,解决思路: 想办法让一个.php程序中, 无论怎么操作,只可能得到一个db实例,问题场景: 某团队开发, 都要利用db类操作数据库. 因此,每人为了得到实例,都会 new db()一次 这些程序中,往往一个页面中,new了多次db,得到多个db对象,zixue.it

13、燕十八,3.5 面向对象进阶 之克隆 clone,克隆语法:$zhang = new human() $lisi = clone $sili,克隆方法: function _clone () 克隆方法,在对象被克隆时,将被调用,zixue.it 燕十八,3.5 面向对象进阶 之final属性,final关键字可以修饰类, 也可以修饰方法 不能修饰属性,final类不允许被继承, final 方法不能被重写,zixue.it 燕十八,3.6 面向对象进阶 之完善单例模式,1:通过 private_clone 防止对象被克隆 2:通过final,防止重要方法被重写,zixue.it 燕十八,3.7

14、 面向对象进阶 之抽象类,飞行器idea-(发动机猜想,平衡舵猜想) 万户测试-(发动机实现,平衡舵猜想) 莱特-(发动机,平衡舵),zixue.it 燕十八,3.7 面向对象进阶 之抽象类,1:抽象类不能被实例化 2:有抽象方法必是抽象类,反之不成立 3:抽象方法没有方法体 4:抽象类继承抽象类时,抽象方法不能被重写 5:抽象方法直至继承至没有抽象方法时,才能实例化,zixue.it 燕十八,4.1 面向对象高级 之类常量,类外部常量:define,类内部常量:const,const不用加权限控制,const 类内部访问用self: 类外部访问用className:,zixue.it 燕十八

15、,4.2 面向对象高级 之接口,类是一种东西,对象的描述,接口是什么? 接口是零件,zixue.it 燕十八,4.3 面向对象高级 之接口的特点,接口的方法必是公共的 接口的方法默认是抽象的 接口不能有属性(常量可以用) 类必须实现接口的所有方法才能实例化 类可以实现多接口 接口也可以继承接口,zixue.it 燕十八,5.1 异常处理,你到井下去看看, 看能通到美国不? 要是不能,你写封遗嘱,通不掉美国,还有毒蛇. 张三,临终留,原来不通啊, 那我不下去了.,zixue.it 燕十八,5.2 异常处理之 Exception异常类,如何写遗嘱?,有一个遗嘱类, 可以实例化,生成一份遗嘱 $err = new Exception(错误信息,错误号),zixue.it 燕十八,5.3 异常处理 之让别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论