PHP中面向对象

  • 面向过程
    ①以事件为中心的编程思想
    ②分析出解决问题所需要的步骤
    ③再为函数把这些步骤一步一步的实现
    ④使用的时候依次调用

  • 类和对象之间的关系
    对象是类的实例,类是对象的模板

  • 如何声明一个类
    用关键字class xxx{}

  • 如何抽象一个类
    ①成员属性:修饰符 $变量名
    常用的修饰符:public,protected,private,static,var(过时)
    ②成员方法:[修饰符] function 方法名(){}
    常用的方法修饰符:public,protected,private,static,abstract,final

  • 实例化对象 实例xxx new 类xxx(); || 对象访问属性或方法用"->"

  • 特殊的对象引用 $this (只要是对象中的成员,必须使用这个对象来访问这个对象内部的属性和方法)

  • 构造方法
    ①它是对象创建完以后,第一个自动调用的方法(特殊)
    ②构造方法名称比较特殊,可以和类名同名
    ③给对象的成员属性赋初值使用
    魔术方法:__construct(){}

  • 析构函数
    ①对象释放前最好调用的方法
    ②没有参数和返回值
    魔术方法__destruct(){}

  • 面向对象之“封装性”
    ①方法的封装(将一些“特殊的方法”加上关键字private修饰。只有类中其他成员可以使用这个方法,但类外部不能使用

    ②属性的封装(将成员属性设置private或protected。只有在类中可以使用,类外部不能使用

    ③有关封装性的4种魔术方法:
    <1>__get(){} 在类外直接访问私有成员时,自动调用。含一个参数
    <2>__set(){} 在类外直接设置私有属性时,自动调用。含两个参数
    <3>__isset(){} 在类外使用isset()判断私有属性时,自动调用
    <4>__unset(){} 在类外使用unset()判断时,自动调用

  • 面向对象之”继承性”
    <1> 子类使用”extends”继承父类
    <2> 若父类设置”private”私有化,那就代表此类只能自己用,子类不能用
    <3> 若父类设置”protected”保护化,那就代表只能自己和自己的子类使用,外界不能用
    <4> 若设”public”公有化,那就代表自己、子类、类外部均可用使用
    <5> 继承性图说明:
    这里写图片描述

  • 继承中的重载(覆盖)
    ①子类中可以写与父类同名的方法
    使用parent::访问父类中被覆盖的方法
    ③子类中的构造方法,用来去覆盖父类中的构造方法。一定要在子类的最上面调用一下子父类中被覆盖的方法
    ④子类的权限只能大于或等于父类的权限

  • 面向对象中常见的关键字
    instanceof关键字(用于检测当前对象实例是否属于某一个类)
    final 关键字(在php中final不定义常量,也不会使用,也不能使用final来修饰成员属性)
    <1> final可以修饰类(那么这个类将不能被继承,是最终的类)
    <2> final可以修饰方法(那么这个方法不能在子类中覆盖、重写)

    static 关键字
    <1>可以修饰属性和方法,但不能修饰类
    <2>修饰成员属性,它被存在内存的初始化静态区
    <3>第一次用到类时,则会被加载到内容
    <4>static静态成员一定要使用类来访问(对象:”->成员” || 类:”::成员”)
    <5>self::可以用在类中的方法中代表本身类
    <6>在静态方法中,不能访问非静态成员
    <7>脚本结束,释放静态成员

    <8>“单例|单态|单件”设计模式
    A.若想让一个类只有一个对象(将构造方法private私有化)
    B.在类的内部使用一个静态方法来new Object

    ④const关键字(类中声明常量)
    <1> 只能修饰成员属性,定义常量
    <2> 类中常量的方式与访问static方式相同,只能读
    A. 在类外: 类名::常量
    B. 在类中:self::常量

  • 其余面向对象的魔术方法
    __toString(){}
    <1> 当在直接使用echo、print、printf来输出一个对象的引用时,自动调用
    <2> 作用:返回对象其本信息“字符串”且不能用参数
    __clone(){}
    <1>使用clone关键字
    <2>是在克隆对象时,自动调用
    <3>作用:与构造方法一样,来初始化克隆对象
    __call(){}
    <1>在调用一个类中不存在的方法时,自动调用
    <2>带两个参数: $method(不存在方法名)/$argus(不存在参数)
    <3>作用:提示信息(自定义) || 将功能相似的方法,用此方法改写

    __set_state(){}
    <1> eval() 检查并执行php代码 “将字符串转变成php代码”
    <2> var_export() 打印合法的结构信息
    <3> 在使用var_export()函数时,要导出一个类的信息时自动调用
    <4> static必有一个数组参数
    __invoke(){}(在对象引用后加上()调用时 自动调用)
    __callstatic(){} (在调用不存在的静态方法时自动调用,与__call()相似)
    __autoload(){}
    <1> 自动加载类(文件名要规范)
    <2> 需加载类的时候(必须用到类名),自动调用
    <3> strtolower() 字符串全部转为小写

  • 对象串行化(序列化)
    ①基本概念
    <1>将对象转成字符串(串行化或序列化)
    <2>将串行化字符串转回成对象(反串行化)
    ②串行化时机
    <3>把对象使用在网络中传输
    <4>将对象持久保存
    ③魔术方法
    <5>__sleep(){} 在进行串行化的时候,自动调用 作用:可以设置需要串行化对象的成员属性,返回个数组
    <6> __wakeup(){} 在进行反串行化的时候,自动调用作用:初始化串行回来的对象,如:__construct(){} | __clone(){}

  • php数组的串行化(JSON格式)
    json_encode() 串行化
    json_decode() 反串行化,若第二个参数为true则返回数组

  • 抽象方法和抽象类
    ①抽象方法
    <1> 若一个方法没有方法体,则这个方法就是抽象方法
    <2> 方法体:声明一个方法,不使用{},直接分号结束
    <3>关键字 abstract

    ②抽象类
    <1>若一个类中有一个抽象方法,则这个类称为抽象类
    <2>关键字abstract
    <3>用abstract修饰的类为抽象类
    <4>抽象类中既可以有抽象方法也可以有其他方法
    <5>抽象类不能实例化对象
    <6>若为抽象类则必须写这个类的子类,将抽象类中的抽象方法全部重写
    <7>其子类必须重写抽象方法(全部)

    ③作用
    <1>抽象方法作用:规定子类必须有这个抽象方法的实现,功能自定
    <2>抽象类作用:规定子类的结构,这样起到一个规范作用

  • php面向对象中的接口技术
    ①与抽象类的相同点
    <1>抽象类和接口都有抽象方法
    <2>均不能实例化对象
    <3>均起到规范性的作用

    ②区别
    <1>接口中的方法,必须全是抽象方法(不用修饰词abstract)
    <2>成员属性,必须是常量
    <3>权限必须为public
    <4>声明用interface关键字

    ③接口细节问题
    <1>接口继承接口(extends)
    <2>类与接口、抽象类与接口(implements)
    <3>类 extends 类 implements 接口 (先继承后实现接口)
    <4>若要实现多接口,用逗号分隔

  • 面向对象的多态性(必须有继承关系,父类最好是抽象类或接口)

  • php命名空间(针对常量、函数、类)
    ① namespace 空间名
    ②在namespace声明命名空间的代码前面不能有任何php代码\html输出,除declare外,只能放在代码的第一行
    ③子命名空间 namespace ljx\ltt
    ④别名、导入: use….as…
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值