Trang chủ » Bài 23: Magic methods toString và invoke trong PHP

Bài 23: Magic methods toString và invoke trong PHP

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

Bài này chúng ta sẽ tập trung tìm hiểu về 2 magic methods là __toString và invoke() trong PHP.

1, __toString().

-Phương thức __toString() sẽ được gọi khi chúng ta dùng đối tượng như một string.

Cú pháp:

public function __toString()
{
    //code
}

VD:

+Khi chưa sử dụng __toString()

<?php

class ConNguoi
{
    private $name = 'Vũ Thanh Tài';
    private $age = 20;
}

echo new ConNguoi();
//Kết quả: Catchable fatal error: Object of class ConNguoi could not be converted to string

+Khi sử dụng __toString()

<?php

class ConNguoi
{
    private $name = 'Vũ Thanh Tài';
    private $age = 20;

    public function __toString()
    {
        return 'Phương thức __toString() được gọi';
    }
}

echo new ConNguoi();
//Kết quả: Phương thức __toString() được gọi

2, __invoke().

-Phương thức __invoke() sẽ được gọi khi chúng ta sử đối tượng như một hàm.

Cú pháp:

public function __invoke(arguments)
{
    //code
}

Trong đó: arguments là các tham số các bạn muốn truyền vào, nếu không truyền gì vào thì bỏ trống.

VD:

+Khi không có __invoke()

<?php

class ConNguoi
{
    private $name = 'Vũ Thanh Tài';
    private $age = 20;
}

$congnuoi = new ConNguoi();

$congnuoi();
//Kết quả: Fatal error: Function name must be a string

+Khi dùng __invoke()

<?php

class ConNguoi
{
    private $name = 'Vũ Thanh Tài';
    private $age = 20;

    public function __invoke()
    {
        echo 'Phương thức __invoke() được gọi';
    }
}

$congnuoi = new ConNguoi();

$congnuoi();
//Kết quả: Phương thức __invoke() được gọi

+Truyền tham số trong __invoke()

name;
        }
    }
}

$congnuoi = new ConNguoi();
$congnuoi('name');
//Kết quả: Vũ Thanh Tài

3, Lời kết.

-Như vậy phần này mình đã giới thiệu xong với mọi người về 2 magic methods __toString() và  __invoke() trong PHP rồi, phần tiếp theo chúng ta sẽ tìm hiểu về __set_state() và __debugInfo().

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