Margic method trong PHP, là những phương thức có tên đặc biệt. Nó được bắt đầu bằng hai dấu gạch dưới. Những phương thức đó sẽ được kích hoạt để đáp ứng những sự kiện của PHP. Nghe có vẻ hơi khó hiểu, nhưng thực sự nó khá đơn giản. Để hiểu rõ hơn, Tôi và các bạn cùng đi tìm hiểu vào từng Magic method trong PHP.
__construct() trong PHP
Phương thức __construct là phương thức được gọi đầu tiên, ngay sau khi có đối tượng được khởi tạo. Chúng ta có thể định nghĩa phương thức __construct ở bất kỳ vị trí nào trong Class. Tuy nhiên, trong thực tế __construct luôn được đặt vị trí đầu tiên trong Class.
Ứng dụng của __construct được dùng để khởi tạo một phiên làm việc web như session hay kết nối database cho toàn ứng dụng.
Download source code
Ví dụ.
Ở ví dụ trên, rõ ràng ngay khi đối tượng $objSinhvien được khởi tạo từ class sinhvien. Thì phương thức __construct được gọi nên ta được kết quả là "Phạm Kỳ Khôi".
__destruct() trong PHP
Ngược lại với __construct là phương thức __destruct. Nó là phương thức được gọi khi có đối tượng được khởi tạo, nhưng __destruct luôn chạy cuối cùng trong toàn bộ kịch bản PHP.
Ứng dụng của __destruct được dùng để hủy một phiên làm việc web như hủy session, đóng kết nối database.
Ví dụ.
Nhìn vào ví dụ trên, khi đối tượng $objSinhvien được khởi tạo. Lúc này, cả hai phương thức __construct và __destruct cùng được gọi. Tuy nhiên, phương thức __destruct là phương thức được gọi cuối cùng nên ta được kết quả như trên.
__clone() trong PHP
Clone là phương thức dùng để thực thi một hành động nào đó, khi có lệnh clone được gọi.
Source code demo
Ví dụ.
__set() và __get() trong PHP
Trong PHP có cung cấp cho chúng ta hai hàm đặc biệt đó là __set và __get. Hai hàm này sẽ tự động gọi khi bạn truy xuất hay gán đến một thuộc tính trong lớp.
Cú pháp hàm set: __set($key, $value).
Trong đó: $key là tên thuộc tính.
$value là giá trị thuộc tính.
Cú pháp hàm get: __get($key).
Trong đó: $key là tên thuộc tính cần lấy.
Ví dụ về __set()
Nhìn vào ví dụ trên, rõ ràng phương trong class sinhvien không hề tồn tại hai thuộc tính setName và getName. Nhưng khi gọi đến setName và getName trong class ta vẫn được kết quả như mong muốn. Ở đây hàm phương thức __set() đã giúp chúng ta giải quyết vấn đề này.
Ví dụ về __get()
Kết quả ta được là "Phạm Kỳ Khôi".
Download source code