Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Bài 20: Magic methods isset và unset trong PHP

Tiếp tục với series bài này chúng ta sẽ tìm hiểu chi tiết về 2 magic methods __isset()__unset() xem nó có gì đặc biệt không nhé!

1, __isset().

-Phương thức __isset() sẽ được gọi khi chúng ta thực hiện kiểm tra một thuộc tính không được phép truy cập của một đối tượng, hay kiểm tra một thuộc tính không tồn tại trong đối tượng đó. Cụ thể là hàm isset() và hàm empty().

-Chú ý: phương thức __isset() không sử dụng được với thuộc tính tĩnh.

Cú Pháp:

public function __isset($name)
{
	//code
}

Trong đó: $name là tên thuộc tính mà các bạn đang thực hiện kiểm tra.

VD:

Không sử dụng __isset()

<?php

class ConNguoi
{
    private $name;
}

//Khởi tạo đối tượng
$connguoi = new ConNguoi();

isset($connguoi->name);
//Kết quả: false

empty($connguoi->name);
//Kết quả: true

Khi sử dụng __isset()

<?php

class ConNguoi
{
    private static $name;

    public function __isset($name)
    {
        echo 'Bạn vừa kiểm tra thuộc tính: ' . $name;
    }
}

//Khởi tạo đối tượng
$connguoi = new ConNguoi();

isset($connguoi->name);
//Kết quả: Bạn vừa kiểm tra thuộc tính: name

empty($connguoi->name);
//Kết quả Bạn vừa kiểm tra thuộc tính: name

/*kiểm tra thuộc tính không tồn tại trong đối tượng*/
isset($connguoi->age);
//Kết quả: Bạn vừa kiểm tra thuộc tính: age

2, __unset().

-Phương thức __unset() sẽ được gọi khi chúng ta thực hiện hủy (unset) một thuộc tính không được phép truy cập của một đối tượng, hay hủy một thuộc tính không tồn tại trong đối tượng đó. Cụ thể là hàm unset().

-Chú ý: phương thức __unset()  cũng không sử dụng được với thuộc tính tĩnh.

Cú Pháp:

public function __unset($name)
{
	//code
}

Trong đó: $name là tên thuộc tính mà các bạn đang thực hiện hủy.

VD:

Không sử dụng __unset()

<?php

class ConNguoi
{
    private $name;
}

//Khởi tạo đối tượng
$connguoi = new ConNguoi();

unset($connguoi->name);
//Kết quả: Cannot access private property ConNguoi::$name

Khi sử dụng __unset()

<?php

class ConNguoi
{
    private $name;

    public function __unset($name)
    {
        echo 'Bạn vừa hủy thuộc tính: ' . $name;
    }
}

//Khởi tạo đối tượng
$connguoi = new ConNguoi();

unset($connguoi->name);
//Kết quả: Bạn vừa hủy thuộc tính: name

/* unset thuộc tính không tồn tại trong đối tượng*/
unset($connguoi->age);
//Kết quả: Bạn vừa hủy thuộc tính: age

3, Lời kết.

-Hai magic methods này rất hữu dụng khi kết hợp với  __set() và __get() để xây dựng một ứng dụng hoàn hảo (core).

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

1 Comments

Vậy làm sao để biết nó có tồn tại hay không ???

dương

6 năm trước

Bình luận

Captcha