116185721845340903
前言
PHP的面向对象学习笔记
类
定义类
1 2 3 4 5 6 7 8 9 10 11
| class 类名 { public $属性名; public function 方法名() { ... } public static function 静态方法名() { ... } }
|
通过类创建对象
无参
有参
1
| $对象名 = new 类名('属性名'->属性值);
|
修改对象属性值
获取对象属性值
调用方法
权限修饰符
public:缺省值,共有权限
protected:受保护的权限
private:私有权限
1 2 3 4 5 6 7 8 9 10 11 12 13
| class 类名 { public $属性名; protected $属性名; private $属性名;
function 方法名() {} public function 方法名() {} protected function 方法名() {} private function 方法名() {} }
|
魔法方法
初始化方法
- 构造函数在对象创建时自动触发
- 必须是通过
new关键字创建对象时触发,如果是通过反序列化则不会触发
1 2 3 4 5 6 7
| class 类名 { public function __construct() { ... } }
$对象名 = new 类名();
|
销毁方法
- 析构函数在对象销毁时自动触发
- 通过
unset()手动销毁对象时会自动触发
- 程序执行完毕时也会自动触发
- 无论对象是通过
new关键字创建的还是通过反序列化获取的,只要是被销毁,都会触发
1 2 3 4 5 6 7 8
| class 类名 { public function __destruct() { ... } }
$对象名 = new 类名(); unset($对象名);
|
转换为字符串方法
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 类名(); $对象名->不存在的方法名();
|
callStatic方法
1 2 3 4 5 6 7 8
| class 类名 { public function __call() { ... } }
$对象名 = new 类名(); $对象名::不存在的静态方法名();
|
get方法
1 2 3 4 5 6 7 8 9
| class 类名 { private $属性名; public function __get() { return $属性名; } }
$对象名 = new 类名(); $变量名 = $对象名->$不存在的属性;
|
set方法
1 2 3 4 5 6 7 8 9
| class 类名 { private $属性名; public function __set($形参名) { $属性名 = $形参名; } }
$对象名 = new 类名(); $对象名->__set(实参);
|
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