
批改狀態(tài):合格
老師批語:這些魔術(shù)方法都有一個對應(yīng)的觸發(fā)事件
1、代碼練習(xí)
<?php
namespace T1;
class A
{
public $name='ldy';
protected $age=30;
private $sex='man';
public function getname(){
echo $this->name;
}
}
$a=new A();
echo "<h5>序列化對象</h5>",'<br>';
$s=serialize($a);
echo $s;
echo "<h5>反序列化對象</h5>",'<br>';
$A=unserialize($s);
var_dump($A);echo'<br>';
echo '反序列化后獲取類名:'.get_class($A),'<br>';
echo '<hr>';
namespace T2;
echo '<h3>自定義序列化和反序列</h3>';
class A
{
public $name='ldy';
protected $age=30;
private $sex='man';
public function getname(){
echo $this->name;
}
public function __sleep(){
//序列化時執(zhí)行,序列化對象屬性
return ['name','sex'];
}
public function __wakeup()
{ //反序列化時執(zhí)行
return $this->getname();
}
}
$a=new A();
echo "<h5>序列化對象</h5>",'<br>';
$s=serialize($a);//序列化時,
echo $s;
echo "<h5>反序列化對象</h5>",'<br>';
$A=unserialize($s);//反序列化類自動執(zhí)行__wakeup(){};
echo '<br>';
var_dump($A);echo'<br>';
echo '<hr>',"<h5>對象復(fù)制=和clone</h5>",'<br>';
$name=new A();
$c=$name;//引用又稱別名
$c->name='dacheng';
echo '$c中name的值:'.$c->name,'<br>';
echo '$name中name的值:'.$name->name,'<br>';
$name=new A();
$c=clone $name;//克隆一個新的類實例
$c->name='dacheng';
echo '$c中name的值:'.$c->name,'<br>';
echo '$name中name的值'.$name->name,'<br>';
2、演示結(jié)果
1、代碼
<?php
class MyException extends Exception
{
public function __construct($message,$code){
$this->message=$message;
$this->code=$code;
}
public function __toString(){
$str="異常錯誤提示:{$this->message}".'<br>'."異常提示代碼:{$this->code}";
return $str;
}
}
class Login
{
public static $code;
public function __construct($code){
self::$code=$code;
switch(self::$code){
case 1:
throw new MyException('密碼錯誤',1);
break;
case 2:
throw new MyException('賬戶錯誤',2);
break;
default:
throw new MyException('未知異常',3);
}
}
}
try{
$error=new Login(2);
}catch(MyException $e){
echo $e;
}
2、運行結(jié)果
1、序列化:serialize()
;對象序列化對應(yīng)的函數(shù):__sleep(){}
2、發(fā)序列化:unserialize()
;對象反序列化(是生成一個新對象)的對應(yīng)的函數(shù):__wakeup(){}
3、對象的復(fù)制:clone
關(guān)鍵字,對應(yīng)的對象函數(shù)__clone(){}
;=
把對象賦值給一個變量,是引用,就是別名
4、__toString(){}
魔術(shù)方法:在直接輸出對象時,自動調(diào)用
5、匿名類:new class{}
:在接口實現(xiàn)部分功能和作為函數(shù)參數(shù)時使用
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號