PHP网站开发项目式教程任务课件12.pptx

上传人(卖家):三亚风情 文档编号:3372379 上传时间:2022-08-24 格式:PPTX 页数:17 大小:60.06KB
下载 相关 举报
PHP网站开发项目式教程任务课件12.pptx_第1页
第1页 / 共17页
PHP网站开发项目式教程任务课件12.pptx_第2页
第2页 / 共17页
PHP网站开发项目式教程任务课件12.pptx_第3页
第3页 / 共17页
PHP网站开发项目式教程任务课件12.pptx_第4页
第4页 / 共17页
PHP网站开发项目式教程任务课件12.pptx_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、任务十二 PHP面向对象nPHP是同时支持面向过程和面向对象的编程方式,PHP 开发者可以在面向过程和面向对象二者中自由选择其一或是混合使用,面向过程开发周期短、发布快、效率较高;面向对象开发周期长、效率较低,但易于维护、改进、扩展和开发API。在PHP开发中,很难说哪一个方式会更优秀,只能在开发过程中尽量发挥出两种编程方式各自的优势。12.2.1 类的创建与实例化n1.定义类nPHP面向对象中定义类的简单语法如下:修饰符 class 类名 零到多个属性 零到多个方法n每个类的定义都以关键字 class 开头,后面依次跟着类名,和一对花括号,花括号里面包含着类的属性与方法的定义。2.类的实例化

2、与访问n在声明一个类之后,类只存在于文件中,程序不能直接调用。需要对该类创建一个对象后,程序中才可以使用,创建一个类对象的过程称为类的实例化。类的实例化需要使用new关键字,关键字后面需要指定实例化的类名,格式为:n$obj=new classname;n注意:对类进行实例化时,如果需要传递参数,则类名后面必须要圆括号,如果没有参数,加括号或者不加括号效果都相同。12.2.2 类的访问控制n类的访问控制是指对属性或方法的访问控制,是通过在前面添加关键字 public(公有)、protected(受保护)或 private(私有)来实现的。npublic:被定义为公有的类成员可以在类的外部或内部

3、进行访问。nprotected:被定义为受保护的类成员则可以被其自身以及其子类和父类访问。nprivate:被定义为私有的类成员则只能被其定义所在的类访问,即私有成员将不会被继承。n属性必须定义为公有、受保护、私有之一。如果用 var 定义,则被视为公有,可以将var看做是public关键字的一个别名形式。12.2.3 静态属性和方法n在类中还可以定义静态的属性和方法,所谓“静态”是指所定义的属性和方法与类的实例无关,只与类本身有关。静态的属性和方法一般用来包含类要封装的数据和功能,可以由所有类的实例共享。在类中可以使用static关键字定义静态属性和方法。n访问静态属性和方法时,需要使用范围

4、解析符“:”,格式如下:nclassname:$attribute;/访问静态属性nclassname:Cfunction();/访问静态方法12.2.4 构造函数和析构函数n构造函数是类中的一个特殊函数,当创建一个类的实例时,构造函数将被自动调用,主要功能是对类中的对象完成初始化工作。与构造函数相对的是析构函数,析构函数在类的对象被销毁时自动调用。1.构造函数nPHP4中,在类的内部与类同名的函数都被认为是构造函数,在创建类的对象时被自动执行。PHP5以及之后的版本,构造函数用_construct()方法来声明(注意,construct前面是两条下划线),这样做的好处是可以使构造函数独立于类

5、名,当类名发生改变时不需要修改相应的构造函数名称了。n在PHP5及以后的版本中,为了向下兼容,如果一个类中没有名为_construct()的方法,PHP将搜索一个与类名同名的方法作为构造方法。如果_construct()方法和与类名同名的方法同时存在,优先将_construct()作为构造方法。2.析构函数n类的析构函数是“_destruct()”,析构函数不能使用参数。若是在类中声明了该函数,PHP将在对象被销毁前调用该函数,将对象从内存中销毁,节省服务器资源。12.2.5 类的继承n1.子类访问父类n在PHP中,允许通过继承其它类的方式来调用这些类中已经定义的属性和方法。PHP不支持多继承

6、,因此一个子类只能继承一个父类。可以使用extends关键字来指明类与类之间的继承关系,格式为:nclass Subclass extends Parclassn其中Subclass表示子类,Parclass表示父类。n子类可以继承父类中的构造函数,也可以定义自己的构造函数。n若要在子类内部调用父类的方法,除了使用“$this-”之外,还可以使用“parent:”或者“父类名称:”形式;而对于父类中的属性,在子类中只能使用“$this-”形式进行访问。12.2.6 抽象类和接口n1.抽象类n抽象类是PHP5开始引入的新特性,它是一种特殊的类,使用关键字abstract定义,不能被实例化。一个抽

7、象类中至少包含一个抽象方法,抽象方法也是由abstract关键字定义。抽象方法只提供方法的声明,不提供方法的具体实现。例如:nabstract function func($name,$num);n包含抽象方法的类必须是抽象类。n抽象类只能通过继承来使用。继承抽象类的子类,必须重载抽象类中的所有抽象方法才能被实例化。2.接口nPHP只能进行单继承,即一个类只能有一个父类。当一个类需要继承多个类的功能时,单继承将无法实现。为了解决这个问题,从PHP5开始引入了接口的概念。n接口是通过 interface 关键字而不是class关键字来定义的,就像定义一个标准的类一样,但其中定义的所有方法都是空的

8、。n接口中定义的所有方法都必须是公有方法,这是接口的特性。另外,接口中不能使用属性,但可以使用const关键字定义常量。n接口也支持继承,接口之间的继承也使用关键字extends。n定义了接口之后,可以将其实例化,接口的实例化称为接口的实现。要实现一个接口需要一个子类来实现接口中所有的抽象方法。定义接口的子类必须使用关键字implements。一个子类可以实现多个接口,通过这种形式即可解决多继承的问题。12.2.7 类的魔术方法nPHP规定以两个下划线“_”开头的方法都保留为魔术方法,所以在定义函数名时尽量不要使用“_”开头,除非是为了重载已有的魔术方法n1.克隆对象nPHP使用clone关键

9、字建立一个与原对象拥有相同属性和方法的对象,若需要改变这些属性,可以使用PHP提供的魔术方法_clone(),这个方法在克隆一个对象时将被自动调用。2.方法重载n魔术方法_call()可以用于实现方法的重载。使用该方法的格式为:nfunction _call(arg1,arg2)n参数说明:n参数arg1,表示被调用的方法名称;n参数arg2,表示传递给该方法的参数数组。若对象访问类中不存在的方法时,_call()方法将被调用。3.访问类的属性n通常情况下为了实现类的封装,将类的属性定义为private私有的,此时从类的外部直接访问类的私有属性是不允许的。因此,在PHP中定义了两个魔术方法,_

10、set()和_get(),在读取一个不存在的属性时,会自动调用方法_set()和_get()。n_set()方法需要两个参数,分别是将要被设置的属性名称和取值,_get()方法只需要属性名称一个参数,该方法会返回属性的值。4.字符串转换n由类创建的对象,其数据类型是对象,不能直接使用print或者echo语句输出。要输出对象时,可以在类中定义一个_toString()方法,在方法中返回一个可输出的字符串。5.自动加载对象n_autoload()方法用于自动加载对象,它不是一个类方法,而是一个单独的函数。如果脚本中定义了_autoload()函数,当使用new关键字实例化一个没有声明的类时,这个

11、类的名字将作为参数传递给_autoload()函数,函数根据参数自动包含含有类的文件,并加载类文件中的同名类。6.对象序列化n对象序列化是指将一个对象转换成字节流的形式,将序列化后的对象在一个文件或网络中传输,然后再反序列化还原为原数据。n对象序列化使用函数serialize()进行,反序列化使用函数unserialize()进行。在对象序列化时,如果存在魔术方法_sleep(),PHP会调用该方法,主要用于清除数据提交、关闭数据库连接等工作,并返回一个数组,该数组包含需要序列化的所有变量;在反序列化一个对象后,PHP会调用_wakeup()方法,主要用于重建对象序列化时丢失的资源。方法_sleep()和_wakeup()都不需要接收参数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(PHP网站开发项目式教程任务课件12.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|