美文网首页
十一:PHP面向对象

十一:PHP面向对象

作者: White夏天baby | 来源:发表于2020-10-04 09:47 被阅读0次

    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类,但是因为策略模式,现在不依赖于任何类。实现了低耦合,高维护的特性

    相关文章

      网友评论

          本文标题:十一:PHP面向对象

          本文链接:https://www.haomeiwen.com/subject/qvbduktx.html