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()
<?php
class ConNguoi
{
private $name = 'Vũ Thanh Tài';
private $age = 20;
public function __invoke($name)
{
if ($name === 'name') {
echo $this->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().
Đă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!
0 Comments