Điện thoại/ Zalo
0389934723
Bài 24: Magic methods set_state, clone và debugInfo trong PHP
Tiếp tục với magic methods, bài này mình sẽ giới thiệu với mọi người về 3 phương thức còn lại là set_state(), __clone() và __debugInfo() trong PHP.
1, Phương thức __set_state().
-Đây là phương thức ít được sử dụng nhất trong PHP và hầu như là không bao giờ ( trong mấy năm đi khách của mình, mình chưa bao giờ sử dụng phương thức này). Phương thức này sẽ được gọi khi chúng ta var_export() đối tượng.
Cú pháp:
public static function __set__state($arr)
{
//code
}
Trong đó: $arr là mảng giá trị truyền vào.
VD:
+Khi chưa sử dụng __set_state():
<?php
class ConNguoi
{
private $name = "Vũ Thanh Tài";
private $age = 20;
}
$connguoi = new ConNguoi();
eval(var_export($connguoi, true) . ';');
//Call to undefined method ConNguoi::__set_state()
+Khi sử dụng __set_state():
$value) {
echo $key . '->' . $value . '
';
}
}
}
$connguoi = new ConNguoi();
eval(var_export($connguoi, true) . ';');
/*
name->Vũ Thanh Tài
age->20
*/
2, Phương thức __clone().
-Phương thức __clone()
được gọi khi chúng ta clone object.
Cú Pháp:
public function __clone()
{
//code
}
VD:
+Khi chưa sử dụng __clone():
name;
//Vũ Thanh Tài
+Khi sử dụng __clone():
name;
// Vũ Thanh Tài
3, Phương thức __debugInfo().
-Phương thức __debugInfo()
được gọi khi chúng ta var_dump()
đối tượng. Thông thường, khi chúng ta var_dump()
một đối tượng thì nó sẽ trả về tất cả các thuộc tính và giá trị của nó trong đối tượng đó, nhưng khi chúng ta sử dụng phương thức __debugInfo()
thì chúng ta có thể tùy chỉnh thông số trả về.
Cú Pháp:
VD:
+Khi chưa sử dụng __debugInfo():
string(14) "Vũ Thanh Tài"
["age"]=>
int(21)
}
*/
+Khi sử dụng __debugInfo():
$this->name,
];
}
}
$connguoi = new ConNguoi();
var_dump($connguoi);
/*
object(ConNguoi)#1 (1) {
["name"]=>
string(14) "Vũ Thanh Tài"
}
*/
3, Lời kết.
-Phần trên mọi người chỉ cần chú ý đến phương thức __clone() và __debugInfo(), còn phương thức __set_state() mọi người có thể clean nó ngay và luôn ( trả bao giờ dùng). Và phần này cũng là phần kết thúc cho series magic methods của mình.
Chúc một ngày vui vẻ!