Phần 3 : Các phương thức magic trong hướng đối tượng PHP

Ở bài trước, chúng ta đã cùng nhau học về tầm vực của thuộc tính và phương trong hướng đối tượng PHP, trong bài viết hôm nay, mình sẽ nói tiếp về một phần cũng rất quan trọng trong lập trình PHP, đó là các phương thức magic

1 . Các phương thức magic trong PHP

Nhằm giúp sử dụng hiệu quả các object trong hướng đối tượng, PHP cung cấp cho lập trình viên phương thức magic.Phương thức magic là những phương thức được đặt tên với kí tự đặc biệt, bắt đầu với dấu 2 gạch dưới. Khi một phương thức được đặt tên với dấu 2 gạch dưới, điều đó là dấu hiệu để PHP nhận biết đây là phương thức magic, và nó sẽ kích hoạt các tính năng đặc biệt của loại phương thức này. Nghe thì có vẻ cao siêu, nhưng bản chất thì nó khá đơn giản, nó chỉ đơn thuần là những hàm được xây dựng sẵn, nhằm mục đích thực hiện một tác vụ nào đó hữu ích cho lập trình. Nói thì dòng dài, thôi thì trăm nghe không bằng mắt thấy, ta vào luôn chủ đề chính cho dễ hiểu 🙂

a ) Phương thức magic __contruct

Đây được gọi là một contructor, nó là một phương thức magic, luôn được gọi đầu tiên khi một đối tượng được khởi tạo.
Nói lại lần nữa, cũng như các phương thức thông thường khác, chỉ có điều nó là được gọi đầu tiên thôi, tất cả chỉ có thể.
Vậy thì ứng dụng của hàm contructor là gì? Vì nó là phương thức được gọi đầu tiên, nên thường được ứng dụng theo mong muốn của lập trình viên
để 1 đoạn mã nào đó được khởi chạy đầu tiên như các hàm kết nối database, hàm gọi các model, view, controller trong MVC, vân vân và vân vân
Giờ thì mình nêu một ví dụ về hàm khởi tạo contructor như sau :

Thực thi đoạn code trên sẽ xuất ra màng hình dòng chữ : “Tôi là phương thức contructor nè @@”. Wow, ảo diệu không các bạn ? Tại sao chỉ cần khởi tạo phương thức, chưa thực hiện truy xuất một action nào cả mà đã xuất ra màng hình rồi? Đơn giản bởi vì đây chính là phương thức luôn được gọi đầu tiên khi khởi tạo object. Vậy thì một câu hỏi khác là giờ mình muốn khởi tạo một đối tượng với các thuộc tính được truyền vào thì sao? Chúng ta có thể làm như sau :

b) Phương thức magic __destruct

Trái ngược với phương thức __contruct, phương thức __destruct được gọi là hàm hủy, sẽ được gọi cuối cùng, nhằm một đích để hủy đi một tác vụ nào đó, chẳng hạn như đóng kết nối cơ sở dữ liệu. Ví dụ minh họa dưới đây giúp các bạn hiểu rõ hơn về hàm __destruct.

Chạy đoạn script trên, xuất ra trình duyệt 2 dòng chữ :

c) Phương thức magic __toString

Điều gì sẽ xảy ra khi bạn cố gắng dùng lệnh echo cho một class? Chắc chắn lỗi (fatal error) sẽ xảy ra. Nhưng với phương thức magic__toString của OOP, bạn có thể echo một class ra dễ dàng. Phương thức này được khai báo để ghi đè lên hành vi của một đối tượng và ép nó phải xuất ra một chuỗi khi có lệnh echo.

Vậy một câu hỏi đặt ra là tại sao phải dùng hàm __toString(), trong khi chúng ta có thể lấy đối tượng và trỏ đến một phương thức nào đó ? Vấn đề chính là ở đây, thay vì khi bạn muốn xem một cái output đầu ra của một phương thức trong class, bạn phải khỏi tạo một đối tượng, rồi dùng con trỏ -> để truy xuất phương thức, thì với những lập trình viên hơi “lazy”, họ muốn output đầu ra nhanh để debug hay thực hiện một ý đồ nào đó, chỉ việc echo đối tượng đó ra là xong. Mục đích của hàm __toString chỉ có thế.  “Cuộc sống vốn dễ dàng, đừng khiến nó khó khăn hơn“. (tựa đề của một clip khá hay). Sẵn tiện share link luôn, bạn nào rảnh thì coi cho zui. Ngoài ra, còn rất nhiều hàm magic khác, các bạn có thể tự tìm hiểu và nghiên cứu ở đây : http://php.net/manual/en/language.oop5.magic.php

 

Nguon : kungfuphp.com

Nếu bạn thấy bài viết có ích và muốn cảm ơn mình thì bạn có thể donate mời mình 1 lý cà phê nhé
Địa chỉ ví BTC của mình : 1NWVkBYnd5iSZ5BsAg4fbr4bYWC7hn9Vcz
Địa chỉ ví ETH của mình : 0xa4881fe9ed28b270a7a7F6D339fe0B73c35DBAd1
Cám ơn và chúc bạn nhiều niềm vui trong cuộc sống !