批改状态:合格
老师批语:这几个功能, 容易被忽视 , 但知道之后可以省不少事, 也有助于从更高的角度来理解类与对象
PHP中可以将类的对象进行序列化,转为可以保存和传输的字符串。
用户自定义异常处理类,以应对更多异常情况。
使用匿名类直接创建一次性对象,可以代替一些简单的完整类
serialize()函数序列化对象,__sleep()指定可以序列化的属性unserialize()还原对象,__wakeup()设置还原对象时自动完成的程序
<?php//对象的序列化,__sleep()、__wakeup()class Merchant{public $name = '安心小区便利店';protected $num = '80108480A';private $updateDate = '15099098909';private $phone = '18093309099';protected $cardno = null;public function getUpdateDate(){return $this->updateDate;}//序列化时自动调用public function __sleep(){return ['name','num'];}//反序列化时自动调用public function __wakeup(){$this->updateDate = '2020-5-5';}}$merchant = new Merchant;//序列化对象,只序列化了name和num两个属性echo $str = serialize($merchant);//输出:O:8:"Merchant":2:{s:4:"name";s:21:"安心小区便利店";s:6:"*num";s:9:"80108480A";}//反序列化,自动调用了__wakeup(),为更新日期重新赋值$obj = unserialize($str);echo $obj->getUpdateDate();//2020-5-5
Exception,抛出程序执行异常Exception类
//自定义异常信息处理class loginException extends Exception{public function __construct($message,$code){$this->code = $code;$this->message = $message;}//重写异常信息输出格式public function __toString(){return __CLASS__.':登录失败!['.$this->code.']:'.$this->message;}}try{$username = $_GET['username'];$password = $_GET['password'];if($username !='admin'){throw new loginException('用户名不存在',1);}elseif($password !='1234qwer'){throw new loginException('密码错误',2);}}catch(loginException $e){echo $e;}//访问地址传参?username=admin&password=12345//输出:loginException:登录失败![2]:密码错误//访问地址传参?username=sds&password=1234qwer//输出:loginException:登录失败![1]:用户名不存在
new class{},直接完成类的创建和实例化
//匿名类//匿名类实现接口功能interface iA{public function sum(...$a);}$res = (new class implements iA{public function sum(...$a){return array_sum($a);}})->sum(1,4,665,65);echo $res;//735//匿名类作为函数参数使用function field(object $obj,array $field){return $obj->toStr($field);}$field = ['id','name','adress'];echo field(new class{public function toStr(array $arr){$arr = array_map(function($itme){return $itme = '`'.$itme.'`';},$arr);return implode(',',$arr);}},$field);//`id`,`name`,`adress`
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号