a array 数组型 b boolean 布尔型 d double 浮点型 i integer 整数型 o common object 共同对象 r object reference 对象引用 s non-escaped binary string 非转义的二进制字符串 S escaped binary string 转义的二进制字符串 C custom object 自定义对象 O class 对象 N null 空 R pointer reference 指针引用 U unicode string Unicode 编码的字符串
调用不可访问或不存在的方法时触发 举个栗子: <?php class wea5e1{ public $name="wea5e1"; public $age = "18"; public function __call($name, $age){ echo 'call触发'; echo "\n"; } } $a = new wea5e1(); $a -> sb(); echo serialize($a); //call触发 O:6:"wea5e1":2:{s:4:"name";s:6:"wea5e1";s:3:"age";s:2:"18";}
这里先讲下get和set(这三个可能经常搞混)
get():
调用不可访问或不存在的属性是触发 和上面要区分开来 举个栗子: <?php class wea5e1{ public $name="wea5e1"; public $age = "18"; public function __get($name){ echo 'get触发'; echo "\n"; } } $a = new wea5e1(); $a -> sb; echo serialize($a);//get触发 O:6:"wea5e1":2:{s:4:"name";s:6:"wea5e1";s:3:"age";s:2:"18";}
set():
用于将数据写入不可访问的属性 举个栗子: <?php class wea5e1{ public $name="wea5e1"; public $age = "18"; public function __set($name,$age){ echo 'set触发'; echo "\n"; } } $a = new wea5e1(); $a -> sb = "nb"; echo serialize($a); //set触发 O:6:"wea5e1":2:{s:4:"name";s:6:"wea5e1";s:3:"age";s:2:"18";}
isset():
当使用 isset 或者是 empty 来检查不存在或者不可访问的属性时触发 <?php class wea5e1{ public $name="wea5e1"; public $age = "18"; public function __isset($name){ echo 'isset触发'; echo "\n"; } } $a = new wea5e1(); isset($a->sb); echo serialize($a); //isset触发 O:6:"wea5e1":2:{s:4:"name";s:6:"wea5e1";s:3:"age";s:2:"18";}
unset():
使用 unset() 删除一个不存在或不可访问的属性时触发 举个栗子: <?php class wea5e1{ public $name="wea5e1"; public $age = "18"; public function __unset($name){ echo 'unset触发'; echo "\n"; } } $a = new wea5e1(); unset($a->sb); echo serialize($a); //unset触发 O:6:"wea5e1":2:{s:4:"name";s:6:"wea5e1";s:3:"age";s:2:"18";}
invoke()
当将一个对象像函数一样调用时触发 举个栗子: <?php class wea5e1{ public $name="wea5e1"; public $age = "18"; public function __invoke($name){ echo 'invoke触发'; echo "\n"; } } $a = new wea5e1(); echo $a('s'); echo serialize($a); //invoke触发 O:6:"wea5e1":2:{s:4:"name";s:6:"wea5e1";s:3:"age";s:2:"18";}