Trang chủ » Bài 24: Magic methods set_state, clone và debugInfo trong PHP

Bài 24: Magic methods set_state, clone và debugInfo trong PHP

Tác giả:
Đánh giá bài đăng
0
87

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()__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()__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ẻ!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Facebook Messenger Chat Zalo
Messenger Zalo