类
使用class关键字创建一个类,变量叫属性,函数叫方法。使用new关键字实例化一个对象
类成员的访问控制
Public:可以在任何地方被访问
Protected:可被其所在的类的子类和父类访问
Private:只能在类内部被访问,子类不能访问父类的私有属性
如未声明,默认为public
常量
使用const定义类常量
使用this关键字在类内部访问成员变量和方法
构造函数和析构函数
构造函数在使用new关键字创建对象时自动执行,可传入参数;析构函数在对象被销毁时自动执行,不能有参数。
clone一个对象
clone将原对象的所有信息从内存中赋复制一份,存储在新开辟的内存中。
继承
PHP中使用extends继承一个类,不存在多继承,一个类只能继承一个父类。
parent::关键字
使用parent::关键字访问父类
魔术方法
__clone()方法
__clone方法会重写clone,当使用clone时,不仅会复制变量,还会执行__clone里面的代码
__toString()
__autoload()
__autoload()方法会在第一次引用一个类时调用该方法,可以通过定义这个函数来启用类的自动加载
__set()和__get()
用于处理类内未定义的属性或者处理私有属性
__call()
用于处理类内未定义的方法,第一个参数为方法名,第二个参数为方法的参数;还可用于不同方法名但功能相同的方法。
__invoke()和__callStatic()
序列化
json数据
json_decode(string,bool)当第二个参数为true时,返回一个数组,默认为false返回一个对象。
抽象类
使用关键字abstract来声明一个抽象类以及抽象方法。抽象类不能实例化对象,子类继承抽象父类后,子类中必须有父类中的抽象方法。抽象类起到规定子类结构的作用,子类必须给出父类抽象方法的实现。
接口
接口是一种特殊的抽象类,使用关键字interface来声明一个接口,不能实例化对象。接口中的方法必须全是抽象方法成员属性必须是常量。所有的权限必须是public,由子类来拓展。使用implements代替extends来实现接口,一个类只能继承一个父类,但是可实现多个接口。如果一个类同时使用了继承父类和实现接口,必须先继承再实现。
多态
文件上传
上传文件后,可以看到数组_FILES中添加了一个以file控件的name值为键,Lighthouse.jpg的详细信息为值。