Cách tạo template engine kế thừa trong PHP

Tram Ho

Từ trước đến nay khi sử dụng framework, mình rất thích sự kế thừa view engine. Nó giúp mình rất nhiều trong việc phân chia layout, cảm giác code rất mạch lạc và tiện lợi. Tò mò và tìm tòi, hôm nay mình xin chia sẻ với mọi người cách tạo ra một template engine siêu “smart” mà đơn giản cho ae. Let’s go

Khởi tạo

Đầu tiên, chúng ta hãy tạo một project với cấu trúc như sau:


➡️


➡️


➡️

À mà project chỉ đơn giản là một file template.php thôi.

À code trên chỉ là khởi tạo file class template.php , mình đã giải thích kĩ các biến và phương thức trong class Template. Sau đây sẽ code chi tiết từng hàm.


Code

Hàm khởi tạo


Tiếp đến hàm include. Hàm này cũng khá đơn giản nhưng các bạn cần phải hiểu rõ về output buffering. Các bạn có thể tham khảo về buffer tại php.net

Hàm sectionend. Chúng ta sẽ lấy đoạn mã HTML (XML) ở giữa hàm section và end

Hàm layoutrenderSection lại càng đơn giản.

Cuối cùng là hàm render một view. Hàm này sẽ gọi đến các hàm section và end trước sau đó sẽ kế thừa layout, cuối cùng trả về một string là file HTML (XML) hoàn chỉnh.

ok. vậy là xong code template engine. Bây giờ test thử xem sao.

Gọi Template Engine

Đầu tiên ta tạo một file ~/views/layout.php.

Lưu ý: trong template engine này, mình sử dụng đuôi file view là .php. Các bạn có thể tùy chỉnh đuôi file này trong hàm __resolvePath file template.php ở trên

Tiếp đến ta tạo một file view ~/views/profile.php

Trong file index.php (file bạn cần gọi view đó).

Ok. Các bạn chạy thử file ~/index.php và tận hưởng thành quả.

Tổng kết

Tự tạo một template engine không khó, quan trọng là các bạn phải hiểu rõ output buffering trong PHP. https://www.php.net/manual/en/ref.outcontrol.php

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo