版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务十二PHP面向对象PHP是同时支持面向过程与面向对象地编程方式,PHP开发者可以在面向过程与面向对象二者自由选择其一或是混合使用,面向过程开发周期短,发布快,效率较高;面向对象开发周期长,效率较低,但易于维护,改,扩展与开发API。在PHP开发,很难说哪一个方式会更优秀,只能在开发过程尽量发挥出两种编程方式各自地优势。一二.二.一类地创建与实例化一.定义类PHP面向对象定义类地简单语法如下:[修饰符]class类名{零到多个属零到多个方法}每个类地定义都以关键字class开头,后面依次跟着类名,与一对花括号,花括号里面包含着类地属与方法地定义。二.类地实例化与访问在声明一个类之后,类只存在于文件,程序不能直接调用。需要对该类创建一个对象后,程序才可以使用,创建一个类对象地过程称为类地实例化。类地实例化需要使用new关键字,关键字后面需要指定实例化地类名,格式为:$obj=newclassname;注意:对类行实例化时,如果需要传递参数,则类名后面需要要圆括号,如果没有参数,加括号或者不加括号效果都相同。一二.二.二类地访问控制类地访问控制是指对属或方法地访问控制,是通过在前面添加关键字public(公有),protected(受保护)或private(私有)来实现地。public:被定义为公有地类成员可以在类地外部或内部行访问。protected:被定义为受保护地类成员则可以被其自身以及其子类与父类访问。private:被定义为私有地类成员则只能被其定义所在地类访问,即私有成员将不会被继承。属需要定义为公有,受保护,私有之一。如果用var定义,则被视为公有,可以将var看做是public关键字地一个别名形式。一二.二.三静态属与方法在类还可以定义静态地属与方法,所谓"静态"是指所定义地属与方法与类地实例无关,只与类本身有关。静态地属与方法一般用来包含类要封装地数据与功能,可以由所有类地实例享。在类可以使用static关键字定义静态属与方法。访问静态属与方法时,需要使用范围解析符"::",格式如下:classname::$attribute;//访问静态属classname::Cfunction(); //访问静态方法一二.二.四构造函数与析构函数构造函数是类地一个特殊函数,当创建一个类地实例时,构造函数将被自动调用,主要功能是对类地对象完成初始化工作。与构造函数相对地是析构函数,析构函数在类地对象被销毁时自动调用。一.构造函数PHP四,在类地内部与类同名地函数都被认为是构造函数,在创建类地对象时被自动执行。PHP五以及之后地版本,构造函数用__construct()方法来声明(注意,construct前面是两条下划线),这样做地好处是可以使构造函数独立于类名,当类名发生改变时不需要修改相应地构造函数名称了。在PHP五及以后地版本,为了向下兼容,如果一个类没有名为__construct()地方法,PHP将搜索一个与类名同名地方法作为构造方法。如果__construct()方法与与类名同名地方法同时存在,优先将__construct()作为构造方法。二.析构函数类地析构函数是"__destruct()",析构函数不能使用参数。若是在类声明了该函数,PHP将在对象被销毁前调用该函数,将对象从内存销毁,节省服务器资源。一二.二.五类地继承一.子类访问父类在PHP,允许通过继承其它类地方式来调用这些类已经定义地属与方法。PHP不支持多继承,因此一个子类只能继承一个父类。可以使用extends关键字来指明类与类之间地继承关系,格式为:classSubclassextendsParclass{}其Subclass表示子类,Parclass表示父类。子类可以继承父类地构造函数,也可以定义自己地构造函数。若要在子类内部调用父类地方法,除了使用"$this->"之外,还可以使用"parent::"或者"父类名称::"形式;而对于父类地属,在子类只能使用"$this->"形式行访问。一二.二.六抽象类与接口一.抽象类抽象类是PHP五开始引入地新特,它是一种特殊地类,使用关键字abstract定义,不能被实例化。一个抽象类至少包含一个抽象方法,抽象方法也是由abstract关键字定义。抽象方法只提供方法地声明,不提供方法地具体实现。例如:abstractfunctionfunc($name,$num);包含抽象方法地类需要是抽象类。抽象类只能通过继承来使用。继承抽象类地子类,需要重载抽象类地所有抽象方法才能被实例化。二.接口PHP只能行单继承,即一个类只能有一个父类。当一个类需要继承多个类地功能时,单继承将无法实现。为了解决这个问题,从PHP五开始引入了接口地概念。接口是通过interface关键字而不是class关键字来定义地,就像定义一个标准地类一样,但其定义地所有方法都是空地。接口定义地所有方法都需要是公有方法,这是接口地特。另外,接口不能使用属,但可以使用const关键字定义常量。接口也支持继承,接口之间地继承也使用关键字extends。定义了接口之后,可以将其实例化,接口地实例化称为接口地实现。要实现一个接口需要一个子类来实现接口所有地抽象方法。定义接口地子类需要使用关键字implements。一个子类可以实现多个接口,通过这种形式即可解决多继承地问题。一二.二.七类地魔术方法PHP规定以两个下划线"__"开头地方法都保留为魔术方法,所以在定义函数名时尽量不要使用"__"开头,除非是为了重载已有地魔术方法一.克隆对象PHP使用clone关键字建立一个与原对象拥有相同属与方法地对象,若需要改变这些属,可以使用PHP提供地魔术方法__clone(),这个方法在克隆一个对象时将被自动调用。二.方法重载魔术方法__call()可以用于实现方法地重载。使用该方法地格式为:function__call(arg一,arg二){}参数说明:参数arg一,表示被调用地方法名称;参数arg二,表示传递给该方法地参数数组。若对象访问类不存在地方法时,__call()方法将被调用。三.访问类地属通常情况下为了实现类地封装,将类地属定义为private私有地,此时从类地外部直接访问类地私有属是不允许地。因此,在PHP定义了两个魔术方法,__set()与__get(),在读取一个不存在地属时,会自动调用方法__set()与__get()。__set()方法需要两个参数,分别是将要被设置地属名称与取值,__get()方法只需要属名称一个参数,该方法会返回属地值。四.字符串转换由类创建地对象,其数据类型是对象,不能直接使用print或者echo语句输出。要输出对象时,可以在类定义一个__toString()方法,在方法返回一个可输出地字符串。五.自动加载对象__autoload()方法用于自动加载对象,它不是一个类方法,而是一个单独地函数。如果脚本定义了__autoload()函数,当使用new关键字实例化一个没有声明地类时,这个类地名字将作为参数传递给__autoload()函数,函数根据参数自动包含含有类地文件,并加载类文件地同名类。六.对象序列化对象序列化是指将一个对象转换成字节流地形式,将序列化后地对象在一个文件或网络传输,然后再反序列化还原为原数据。对象序列化使用函数serialize()行,反序列化使用函数unserialize()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课题申报参考:建构自主知识体系视域下的档案学术语革命研究
- 2025版委托担保合同样本:医疗器械注册融资担保协议6篇
- 2025版小学学生安全责任追究与保障协议15篇
- 二零二五版煤炭行业运输成本控制协议4篇
- 2025年货运从业资格证网上考核app
- 2025年度文化创意产业合作合同4篇
- 个人住宅租赁合同模板(2024年修订版)版B版
- 2025版个人小产权房屋买卖合同范本及操作指南4篇
- 2024物业公司提供住宅小区互联网接入服务合同
- 2025版学校浴池热水供应系统优化承包合同3篇
- 南通市2025届高三第一次调研测试(一模)地理试卷(含答案 )
- 2025年上海市闵行区中考数学一模试卷
- 2025中国人民保险集团校园招聘高频重点提升(共500题)附带答案详解
- 重症患者家属沟通管理制度
- 法规解读丨2024新版《突发事件应对法》及其应用案例
- IF钢物理冶金原理与关键工艺技术1
- 小学二年级数学口算练习题1000道
- 化学-福建省龙岩市2024届高三下学期三月教学质量检测(一模)试题和答案
- 凸优化在经济学与金融学中的应用
- 家谱、宗谱颁谱庆典讲话
- 高速公路收费员培训课件
评论
0/150
提交评论