Điện thoại/ Zalo
0389934723
Bài 21: Magic methods call và callStatic trong PHP
Bài trước chúng ta đã được tìm hiểu về magic methods tác động đến thuộc tính rồi, và trong PHP cũng có 2 magic methods hỗ trợ tác động đến phương thức trong đối tượng là __call()
và __callStatic()
.
1, __call().
-Phương thức __call()
sẽ được gọi khi chúng ta gọi một phương thức không được phép truy cập từ bên ngoài hoặc không tồn tại.
Cú pháp:
public function __call($methodName, $arguments)
{
//code
}
Trong đó:
- $methodName là tên phương thức mà các bạn đang tiến hành gọi.
- $arguments là mảng các thành phần mà các bạn đang truyền vào trong phương thức.
VD:
+Không sử dụng magic methods
name;
}
}
$connguoi = new ConNguoi();
$connguoi->getName();
//Kết Quả: Call to private method ConNguoi::getName()
+Khi sử dụng magic methods
name . ' + ' . $this->age;
}
}
$connguoi = new ConNguoi();
//Khi không truyền tham số.
$connguoi->getInfo();
//Kết quả: Bạn vừa gọi phương thức: getInfo và có các tham số:
//Khi truyền tham số
$connguoi->getInfo('name', 'age');
//Kết quả: Bạn vừa gọi phương thức: getInfo
//và có các tham số: Bạn vừa gọi phương thức: getInfo và có các tham số: name-age
2, __callStatic().
-Phương thức __callStatic()
sẽ được gọi khi chúng ta gọi một phương thức tĩnh không được phép truy cập từ bên ngoài hoặc không tồn tại.
Cú pháp:
public static function __callStatic($methodName, $arguments)
{
//code
}
Trong đó:
- $methodName là tên phương thức tĩnh mà các bạn đang tiến hành gọi.
- $arguments là mảng các thành phần mà các bạn đang truyền vào trong phương thức.
VD:
+Khi không sử dụng static:
name . ' + ' . $this->age;
}
}
ConNguoi::getInfo();
//Kết Quả: Call to private method ConNguoi::getInfo()
+Khi sử dụng static.
name . ' + ' . $this->age;
}
}
ConNguoi::getInfo();
//Kết Quả: Bạn vừa gọi phương thức: getInfo và có các tham số:
/*Khi truyền tham số*/
ConNguoi::getInfo('name', 'age');
//Kết quả: Bạn vừa gọi phương thức: getInfo và có các tham số: name-age
3, Lời kết.
-Như vậy mình đã giới thiệu với mọi người xong về __call()
và __callStatic()
trong PHP rồi. Và đây cũng là một phần được sử dụng khá là nhiều trong core của Laravel.