OOP:面向对象编程(灵活性、重要性、扩展性)
    OOA:面向对象分析
    OOD:面向对象设计

      1. 定义类:定义方法和属性
      2. 初始化类:调用类中的属性和方法
      3. 特殊对象:$this
      4. 构造方法:__construct()
        1. 构造方法是对象创建后第一个自动调用的方法
        2. 如果没有显示的声明,则对象会存在一个没有参数列表且对象成员为空的构造方法;
        3. 显示声明之后,则默认的构造方法不存在
        4. 每次使用new关键字会自动调用构造方法
      5. 析构方法:__destruct()
        1. 对象被销毁前自动调用析构方法
        2. 析构函数不能带有任何参数
      6. private与public:共有私有

    image.png

    1. 私有属性的访问与设置:建立公有接口
    2. 几个方法:
      1. _set()为私有属性赋值,却不能访问私有属性
      2. _get()外部对象可以通过该方法获得私有属性的值
      3. _isset()测定类属性是否存在
      4. _unset()将私有属性删除
    3. 继承:extends(单继承于多继承)
    4. 关键字和方法:final static const instanceof _toString() _call()
      1. static定义属性,多个类共享
        1. 类外访问-类名::属性名 类名::方法名()
        2. 类中访问-self::属性名 self::方法名()
      2. final定义类不能被继承,方法不能被覆盖
    5. 抽象类与接口:interface implements
      1. 抽象类是特殊的类,而接口是特殊的抽象类
      2. 抽象类
      3. 抽象方法:没有方法体,只有方法名
      4. l 如果一个类中所有的方法是都是抽象方法,那么这个抽象类可以声明成接口
      5. 接口是一个特殊的抽象类,接口中只能有抽象方法和常量
      6. 接口中的抽象方法只能是public,可以省略,默认也是public的
      7. 通过implements关键字来实现接口
      8. 不能使用abstract和final来修饰接口中的抽象方法。
    6. 命名空间:基本使用,名称术语在php中允许在子类中调用父类的同名方法,使用::符号进行操作
      • 命名空间
    7. 防止命名的冲突 — namespace
    8. 调用不同空间的方法
      • 类和对象
    9. 对象是具体存在的事物,对象是由属性(变量)和方法(函数)组成的
    10. 类是具有相同属性和行为的一组对象的集合
      • 创建类
    11. 类是由属性、方法、常量组成的,也可以说
    12. 类成员有:属性、方法、常量
    13. 类的命名规则
      1. 以字母、下划线开头,后面跟的是字母、数字、下划线
      2. 不能用PHP关键字做类名
      3. 类名不区分大小写(变量名区分,关键字、类名不区分大小写)
      4. 类名用帕斯卡命名法(大驼峰单词的首字母大写)
    14. 类的属性
      1. 属性本质就是变量
      2. 通过->调用对象的成员 对象名->属性名 对象名->方法名()
      3. 声明一个人类的属性:
    15. 关键字public , private, static
    16. 成员方法(方法的本质就是函数)
      1. 方法前面public是可以省略的,如果省略,默认就是public的。
      2. 属性前面的public不能省略
      • 实例化对象
    17. 传递参数

    image.png
    不传参
    image.png

    1. $person1, $person2,$person3相当于再内存中开辟了三分空间
    2. 对象在内存中的分配
      1. 栈空间:储存小,访问快
      2. 堆空间:动态扩张,大数据。(字符串,数组,对象)
      3. 数据段:全局,静态变量
      4. 代码段:只允许读操作,不允许写
    3. 对象成员的访问(使用运算符 -> 来完成对象对成员的访问)
    4. 特殊对象成员$this($this表示当前对象的引用,也就是是或$this保存的当前对象的地址)