Các phương thức magic trong hướng đối tượng PHP

Thảo luận trong 'Rao Vặt Toàn Quốc' bắt đầu bởi caohongquang, 13/7/16.

  1. caohongquang

    caohongquang Thành Viên Mới

    Tham gia ngày:
    3/3/15
    Bài viết:
    39
    Đã được thích:
    0
    Điểm thành tích:
    6
    Ở bài trước, chúng ta đã cùng nhau làm quen về tầm vực của tính chất và phương trong hướng đối tượng PHP, trong bài viết bữa 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à những phương thức magic
    1 . Các phương thức magic trong PHP


    Nhằm giúp dùng hiệu quả những object trong hướng đối tượng, PHP phân phối cho nhà phát triển phương thức magic.Phương thức magic là các phương thức được đặt tên với kí tự đặc trưng , khởi đầ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 diện đây là phương thức magic, và nó sẽ kích hoạt những tính năng đặc biệt của loại phương thức này. Nghe thì có vẻ cao thâm , nhưng bản tính thì nó khá dễ dàng , nó chỉ thuần tuý là các hàm được bề ngoài 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 :)
    Đọc thêm : One step to in a short time convert your Magento store into https://www.magebay.com/magento-multi-vendor-marketplace-extension in minutes within the best cost & our quality support service! chiefly compatible with Magento 2
    a ) Phương thức magic __contruct

    Đây được gọi là một contructor, nó là một phương thức magic, uôn luôn được gọi trước hết 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 ngày khác, chỉ có điều nó là được gọi trước tiên thôi, tất cả chỉ có thể.
    Vậy thì vận dụng của hàm contructor là gì? vì nó là phương thức được gọi trước nhất , nên thường được vận dụng theo mong muốn của developer
    để 1 đoạn mã nào đó được khởi chạy trước hết như những hàm kết nối database, hàm gọi những model, view, controller trong MVC, vân vân và vân vân
    Giờ thì mình nêu một thí dụ về hàm khởi tạo contructor như sau :
    [​IMG]
    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 ko Các bạn ? vì sao chỉ cần khởi tạo phương thức, chưa thực hành truy xuất một action nào cả mà đã xuất ra màng hình rồi? thuận tiện bởi vì đây chính là phương thức luôn luôn được gọi trước nhất 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 tính chất được truyền vào thì sao? Chúng ta có thể làm như sau :
    [​IMG]
    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 sau cuối, 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. tỉ dụ minh họa dưới đây giúp Anh chị hiểu rõ hơn về hàm __destruct.
    [​IMG]
    c) Phương thức magic __toString

    Điều gì sẽ xảy ra khi bạn phấn đấu 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ễ . 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.
    [​IMG]
    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ỏ tới 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 các 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. tiêu chí của hàm __toString chỉ có thế. Cuộc sống vốn dễ , đừng khiến nó khó hơn. (tựa đề của một clip khá hay). Sẵn luôn tiện share link luôn luôn, bạn nào nhàn rỗi thì coi cho zui. không những thế, còn đông đảo hàm magic khác, Cả nhà có thể tự khám phá và nghiên cứu ở đây :php .net
     
    Cảm ơn đã xem bài:

    Các phương thức magic trong hướng đối tượng PHP

    Đang tải...


Like và Share ủng hộ ITSEOVN