Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:多尝试是对的
<?php
// 一个案例演示sleep(), wakeuup()
class User1
{
protected $name = '杨过';
private $age = 28;
}
class User2 extends User1
{
protected $sex = '男';
protected $skill = '黯然销魂掌';
protected $partner = '小龙女';
protected $crush = '郭襄';
public function get()
{
return $this->name . '的妻子是' . $this->partner . '。';
}
}
class User3 extends User2
{
public function __sleep()
{
return ['name','partner','crush'];
}
public function __wakeup()
{
$this->crush = '保密';
}
}
$user2= new User2();
echo $user2->get(),'<hr>';
echo '对象User2 序列化:' . serialize($user2),'<hr>';
$user3 = new User3();
echo'对象User3 序列化:' . serialize($user3),'<hr>';
echo '对象User3 反序列化:','<br>';
$str = unserialize( serialize($user3));
var_dump($str);
实例效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>异常处理</title>
</head>
<body>
<!-- 模拟一个表单输入界面 -->
<form>
<input type="text">
<br/>
<label for="">密码:</label>
<input type="password">
<br/>
<label for="">邮箱:</label>
<input type="mail">
<br/>
<input type="submit">
</form>
<?php
// 自已创建一个操作的异常类
class demoException extends Exception
{
public function __toString()
{
return <<< DBE
<style>
table {border-collapse: collapse;border:1px solid black;text-align: center;}
td {border:1px solid black;padding: 5px;}
tr:first-of-type {background-color:#eee;}
tr:last-of-type td {color: coral;}
</style>
<table>
<tr><td>代码</td><td>信息</td><td>文件</td><td>行号</td></tr>
<tr><td>$this->code</td><td>$this->message</td><td>$this->file</td><td>$this->line</td></tr>
</table>
DBE;
}
}
// 异常处理
try
{
throw new demoException('输入邮箱错误!',101);
}catch (demoException $e){
echo $e;
}
echo '<hr>';
?>
</body>
</html>
实例效果
总结:
1.序列化和反序列化可用于数据的保存、传输,比如数据库连接参数的保存和传输,实现自动连接数据库的功能。
序列化 调用 sleep()
反序列化 调用 wakeup()
2.__tostring在异常处理中可自定义出错信息。
我不清楚如何产生表单输入错误,并捕抓错误信息,我尝试输入不带@的邮箱,但没有错误信息,只能使用throw 语句模拟错误信息。