十一:PHP面向对象

2020-10-04  本文已影响0人  White夏天baby

PHP类权限控制修饰符,成员访问权限

public       可在类的内部、外部、子类中使用

protected  可在类的内部、子类中使用,可被子类继承

private      只可在类的内部使用,不可被子类继承

单一继承

PHP的类继承是单一继承方式,即只能继承一个类,若有接口的,可以继承一个类、一个接口。

方法重写

子类继承父类,子类中的方法名与父类中的方法名相同时,子类中的方法体会覆盖掉父类中的方法。若想要保留父类中的方法体,并在原有的基础上扩展,可使用parent关键字进行调用

抽象类的定义

关键字    abstract   定义

若类中有抽象方法,类必须定义成一个抽象类。类中没有抽象方法,类也可以定义成抽象方法。抽象方法中抽象类在继承的子类中必须被定义,且子类定义的方法访问控制权限>=父类控制权限

接口的定义

关键字   interface   定义

接口中的方法都是抽象的,方法没有方法体。方法必须时公有,类中必须实现接口中的所有方法

魔术方法

__construct():构造函数   方法名与类名相同,也是构造方法

在创建一个对象时,就会调用此方法,适合在使用对象之前初始化操作

__destruct():   析构函数    某个对象的所有引用都被删除或者当对象被显式销毁时执行

方法重载

__call():  在对象中调用一个不可访问方法时,__call()会被调用。

__callStatic():  在静态上下文中调用一个不可访问方法时,__callStatic()会被调用。

调用了不可访问的方法,会调用__call、__callStatic  $name,是不可访问的方名,$arguments是参数数组

属性重载

__get():   读取不可访问属性的值时,__get()会被调用。

__set():     读取不可访问属性的值时,__get()会被调用。

__isset():   当对不可访问属性调用isset()empty()时,__isset()会被调用

__unset():  当对不可访问属性调用isset()empty()时,__isset()会被调用

__sleep():    此功能可以用于清理对象   属性值被抛弃

__wakeup():   预先准备对象需要的资源

__toString():    用于一个类被当成字符串时应怎样回应

对象$class被当成字符串输出

__clone():   clone一个对象时调用的方法

设计模式

工厂模式,不需要在文件中多次实例化一个类,而是直接在工厂类中实例化一个类,然后返回这个对象

单例模式,一个类只允许实例化一次,通常情况下,还是在类的内部创建自己。把构造函数的权限设置为private,可实现单例模式。使用场景:连接数据库,在程序执行过程中,没有必要多次连接数据库,这是对资源的浪费。

在类的外部不能创建单例模式的类

注册树模式,将实例化的对象注册到注册树上,在全局可以直接使用

适配器模式,

无论时那一种类,封装的方法名称都相同,这就是适配器模式

观察者模式
当一个对象状态发生改变时,依赖它的对象全部接收到通知,并自动更新

场景:一个事件发生后,要执行一连串操作。传统的编成方式是在事件的代码之后,直接加入逻辑。当更新逻辑增多之后,代码也变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件主体代码。

观察者模式实现了低耦合,非侵入式的通知与更新机制

策略模式

将特定的行为和算法封装成一个类,以适应某些特定的上下文环境。这种模式就是策略模式。

例如:点上针对男性女性用户,广告为的广告不同,跳转的类目也要不同

可实现Ioc  依赖倒置,控制反转

page类中的index方法原本依赖FeMaleUser类或MaleUser类,但是因为策略模式,现在不依赖于任何类。实现了低耦合,高维护的特性

上一篇下一篇

猜你喜欢

热点阅读