- 面向对象编程核心是“万物皆对象”思想,与面向过程编程思想的本质区别是事物操作的主体:每一次操作都是由明确的对象来执行。
- 面向对象思想的本质是将数据(属性)、数据操作(函数)进行一次二次封装(类),而往后的所有操作都必须由类或类生成的对象进行调用。
- 面向对象核心关键字
- 类:class,结构主体,某一类相似主体的公共部分抽离。
- 类成员:类结构中能够指定定义的成员
- 属性(property):存储数据的变量
- 方法(method):数据操作的逻辑
- 类常量(const):存储固定数据的内部常量(const定义)
- 实例化:new,类结构产生对象的过程
- 实例:instance,一个具体的对象
- 访问修饰限定符:限定被修饰成员的方位位置(所有类成员都能被访问)
- public:公有,表示不限定访问区域
- protected:受保护,表示限定范围为关联类内部
- private:私有,表示限定范围为自己
- 类内部对象:$this
- 普通方法内部,代表来访对象
- 在类的内部,所以不论修饰限定符都可以访问
- 魔术方法:自动调用的方法
- 构造方法:__construct(),对象初始化资源,对象实例化后自动调用
- 析构方法:__destruct(),对象销毁资源,销毁时对象自动调用
- 克隆方法:__clone(),对象被克隆后,克隆对象自动调用
- 对象传值:对象是引用传值,不会产生新对象
- 范围解析操作符
::
,用于类直接访问成员的符号- 类访问类专属成员:类常量(静态属性和静态方法)
- 对象也可以使用该符号访问类成员(不建议)
- 静态成员:使用static关键字修饰的成员,用来给类访问的成员
- 静态成员:静态属性和静态方法
- 静态成员在编译(类加载到内存)时初始化,执行效率更高
- 静态属性不会出现在对象的内存空间
- self关键字:类内部用来代表类名访问类成员的
- self与范围解析操作符结合访问: self::类成员
- self可以代替雷鸣在类内部实例化: new self()
- 类的加载:类的使用的前提是类在内存中必须存在
- 手动加载:使用前写好加载路径
- 自动加载:在内存中找不到要用的的类时自执行
- __autoload()函数,在函数内部写好记加载方式
- 自定义函数+ __spl_autoload_register()函数:与魔术函数累次
- 对象克隆:从已有对象产生新对象
- 禁止克隆:私有化克隆魔术方法