前言
PHP的面向对象学习笔记
定义类
1 2 3 4 5 6 7
| class 类名 { public $字段名; public function 方法名() { ... } }
|
创建对象
无参
有参
1
| $对象名 = new 类名('属性名'->属性值);
|
获取对象属性值
修改对象属性值
调用方法
权限修饰符
- public:修饰共有属性或公有方法
- protected:修饰受保护属性或受保护方法
- private:修饰私有属性或私有方法
魔术方法
__construct()
- 构造函数在对象创建时自动触发
- 必须是通过
new关键字创建对象时触发,如果是通过反序列化则不会触发
1 2 3 4 5 6 7
| class 类名 { public function __construct() { ... } }
$对象名 = new 类名();
|
__destruct()
- 析构函数在对象销毁时自动触发
- 通过
unset()手动销毁对象时会自动触发
- 程序执行完毕时也会自动触发
- 无论对象是通过
new关键字创建的还是通过反序列化获取的,只要是被销毁,都会触发
1 2 3 4 5 6 7 8
| class 类名 { public function __destruct() { ... } }
$对象名 = new 类名(); unset($对象名);
|
__toString()
1 2 3 4 5 6 7 8
| class 类名 { public function __toString() { ... } }
$对象名 = new 类名(); echo $对象名;
|
__call()
1 2 3 4 5 6 7 8
| class 类名 { public function __call() { ... } }
$对象名 = new 类名(); $对象名->不存在的方法();
|
__get()
1 2 3 4 5 6 7 8
| class 类名 { public function __get() { ... } }
$对象名 = new 类名(); $变量名 = $对象名->$不存在的属性;
|
__set()
1 2 3 4 5 6 7 8
| class 类名 { public function __set() { ... } }
$对象名 = new 类名(); $对象名->$不存在的属性 = 值;
|
__sleep()
1 2 3 4 5 6 7 8
| class 类名 { public function __sleep() { ... } }
$对象名 = new 类名(); $变量名 = serialize($对象名);
|
__wakeup()
- 通过
unserialize()反序列化前会自动触发
1 2 3 4 5 6 7 8 9
| class 类名 { public function __wakeup() { ... } }
$对象名 = new 类名(); $变量名 = serialize($对象名); unserialize($变量名);
|
__isset()
- 通过
isset()或empty()判断私有属性是否存在时自动触发
1 2 3 4 5 6 7 8 9
| class 类名 { private $私有属性; public function __isset() { ... } }
$对象名 = new 类名(); isset($对象名->$私有属性);
|
__unset()
1 2 3 4 5 6 7 8 9
| class 类名 { private $私有属性; public function __unset() { ... } }
$对象名 = new 类名(); unset($对象名->$私有属性);
|
__invoke()
1 2 3 4 5 6 7 8
| class 类名 { public function __invoke(形参列表) { ... } }
$对象名 = new 类名(); $对象名(实参列表);
|
完成
参考文献
哔哩哔哩——千锋教育网络安全学院
哔哩哔哩——xiaodisec