Cấu trúc thư mục Zend Framework 2

ZendSkeletonApplication là bộ khung dự án mẫu kết hợp với bộ thư viện Zend Framework 2 được đưa ra bởi Zend Techologies, nhằm hỗ trợ các lập trình viên có thể dễ dàng tiếp cận – xây dựng nhanh chóng các dự án website với ZF2. Nó được xây dựng theo mô hình MVC mà thư viện Zend Framework 2 cung cấp và là nơi chứa toàn bộ thư viện Zend Framework 2, các modules mở rộng, các tập tin cấu hình để khởi tạo một dự án. Để hiểu rõ hơn, trong bài viết này chúng ta sẽ đi sâu tìm hiểu chi tiết về cấu trúc thư mục, quy trình vận hành và sử dụng các lớp thư viện, những ưu – nhược điểm của nó để chúng ta có thể học tập và làm việc một cách dễ dàng hơn với bộ thư viện đồ sộ ZF2.

Xem thêm: Cài đặt Zend Framework 2 cơ bản

Cấu trúc thư mục

Hệ thống các thư mục và tập tin cấu hình cài đặt đã được tạo ra sẵn sàng có thể chạy ngay một dự án đơn giản, các chuyên gia phát triển zend đã tạo một bộ khung cấu trúc thư mục hoàn chỉnh làm việc uyển chuyển và tốt nhất với thư viện zend framework 2, giúp những lập trình viên khác dễ dàng phân phối – mở rộng – tiếp cận.

Cấu trúc thư mục của Zend Framework 2

Cấu trúc thư mục của Zend Framework 2

Những thư mục và tập tin quan trọng có trong bộ dự án mẫu (khung) ZendSkeletonApplication :

  • config: là nơi chứa những cấu hình của toàn bộ dự án của bạn đang xây dựng; nó bao gồm tập tin cấu hình application.config.php nơi khai báo các module sẽ được sử dụng, các thiết lập cấu hình cho toàn bộ dự án… và một thư mục autoload là những tập tin cấu hình tự động được load vào dự án có đuôi mở rộng (*.local.php hoặc *.global.php). Những tập tin cấu hình có đuôi mở rộng là (*.local.php) sẽ bị bỏ qua khi các bạn commit dự án lên Git, nên những thông tin nhạy cảm như tài khoản kết nối database cũng thường được đặt vào trong các tập tin này.
  • data: thư mục chứa những dữ liệu được cached từ database, hoặc cache những toàn bộ cấu hình của dự án… Chúng ta lưu trữ các tập tin dữ liệu trong thư mục này để dễ dàng quản lý và xử lý.
  • module: nơi chứa những module mở rộng, bạn có thể xây dựng những module mới dành riêng cho dự án của bạn, và cũng có thể đặt những module mở rộng đã được phát triển từ địa chỉ : http://modules.zendframework.com/ giúp bạn xây dựng dự án một cách nhanh chóng và hiệu quả nhất. Trong các bài viết tiếp theo, chúng ta sẽ đi tìm hiểu cách xây dựng một module hoàn chỉnh.
  • public: là nơi những tập tin như css, js, font, hình ảnh,…. để hỗ trợ cho việc hiển thị website trên trình duyệt, nó chứa những tài nguyên công khai và dễ dàng truy nhập.
  • vendor: nơi chứa bộ thư viện Zend Framework 2 và những module mở rộng khác. Bạn có thể đặt module mở rộng ở cả trong 2 thư mực module hoặc vendor
  • composer.json, composer.phar, composer.lock: là tập tin khai báo những thư viện phụ thuộc giúp Composer có thể xác định được các gói thư viện cần sử dụng trong dự án của bạn.
  • .gitignore, .gitmodules, README.md: là những tập tin được tạo ra hỗ trợ quá trình quản lý dự án của bạn trên Git. Nếu bạn không làm việc với Git thì có thể bỏ qua những tập tin này.
  • init_autoloader: là nơi giúp load các tập tin cần thiết vào trong giúp dự án, nó sử dụng kỹ thuật lazy-load nên khi bạn khai báo và sử dụng một lớp nào đó thì nó mới được load vào và sử dụng, mặc định nó sẽ load các lớp theo chuẩn PRS-0 và cũng hỗ trợ theo chuẩn PRS-4. Xem thêm tại địa chỉ : http://www.php-fig.org/psr/psr-0/

Cấu trúc thư mục mặc định của một module

Sau đây, chúng ta cùng nhau tìm hiểu cấu trúc thư mục của một module hoạt động trong bộ dự án mẫu ZendSkeletonApplication. Toàn bộ các module mở rộng do chúng ta tự xây dựng hay lấy từ nguồn : http://modules.zendframework.com/ đều có thể đặt vào một trong hai thư mục modulevendor.Để dự án bạn đang phát triển có thể chạy được module đó, bạn phải khai báo tên của module đó trong tập tin cấu hình application.config.php và một dự án của bạn có thể bao gồm nhiều module, những module có thể làm việc và tương tác với nhau.

Xem thêm: Cách tạo một module mới trong Zend Framework 2

Cấu trúc thư mục Module trong ZF2

Cấu trúc thư mục Module trong ZF2

 ZendSkeletonApplication cung cấp một module mẫu là Application, dựa vào module mẫu này bạn có thể xây dựng các module tương tự để có thể xây dựng và phát triển hệ thống của bạn. Những thư mục và tập tin cấu hình có trong module Application như sau:

  • config: là thư mục chứa tập tin cấu hình của module : module.config.php . Các tập tin cấu hình của tất cả các module được khởi động chạy trong dự án sẽ được ghép/merge thành một cấu hình chung để sử dụng trong quá trình khởi tạo và chạy dự án.
  • language : là thư mục chứa các tập tin ngôn ngữ, khi dự án làm cần dùng cho nhiều người dùng ở các quốc gia khác nhau, sử dụng ngôn ngữ khác nhau… Đây là một phần không thể thiếu khi phát triển một dự án hỗ trợ đa ngôn ngữ.
  • src: là nơi chứa mã nguồn phát triển của module. Bạn thể viết các lớp xử lý Controller, Model, View, Form… và sử dụng chúng ở bất cứ đâu trong module hoặc trong các module khác.
  • view: là nơi chứa phần hiển thị tương ứng với các controller – action, những mã html được viết trong các tập tin (*.phtml) tương ứng với từng action. Nó còn gồm những trang thông báo lỗi 4o4 hoặc exception để hỗ trợ người dùng phát có thể kiểm soát và sửa lỗi.
  • Module.php : là một tập tin không thể thiếu trong mỗi module, nó là một lớp cùng tên dành riêng cho từng module. Khi hệ thống dự án bước tới giai đoạn load các module, các lớp Module của từng module sẽ được khởi tạo và nó giúp trả ra các cài đặt cấu hình để sử dụng tiếp tục trong quá trình chạy.

Ưu điểm

 – Đây là khung xương mẫu được phát triển kết hợp với bộ thư viện Zend Framework 2, nên do vậy nó làm việc hiệu quả cao nhất và tận dụng tối đa các đặc điểm lợi thế mà bộ thư viện cung cấp. Chúng ta có thể tạo ra một bộ khung xương khác ZendSkeletonApplication nhưng chưa chắc đã hoạt động nhuần nhuyễn với những đặc điểm của Zend Framework 2 cung cấp.

– Dễ dàng tiếp cận – phân phối và sử dụng, bởi đây là khung dự án mẫu chuẩn nhất và được rất nhiều lập trình viên lựa chọn sử dụng. Nhiều tài liệu hướng dẫn Zend Framework 2 đều sử dụng ZendSkeletonApplication làm những ví dụ mẫu và phát triển các module. Sẽ khó khăn nếu bạn không sử dụng ZendSkeletonApplicaiton.

– Cài đặt và sử dụng một cách dễ dàng và nhanh chóng nhất, không có quá nhiều yêu cầu về cấu hình hay phần mềm liên quan.

Nhược điểm

– Rất khó tùy chỉnh lại để có thể tối ưu hóa trong quá trình khởi tạo cho các request lightweight. Mặc định nó sẽ khởi tạo rất nhiều service mặc định liên quan tới Router, EventManager, ViewManager… đây là những thành phần cần thiết cho một số request, nhưng một số request nhẹ như xử lý ajax thì là không cần thiết phải khởi tạo quá nhiều như thế.

– Khi dự án có nhiều module, nó sẽ trở lên cồng kềnh và nặng nề, không còn linh hoạt. Quá trình khởi tạo ngày càng chậm và tài nguyên sử dụng Ram cũng tăng lên đáng kể.

Kết luận

Như vậy, chúng ta đã tìm hiểu qua về cấu trúc các thư mục và vai trò của chúng trong khung dự án mẫu ZendSkeletonApplication, khi đó chúng ta có thể bắt tay sẵn sàng vào việc xây dựng một module riêng trong bộ mã nguồn ZendFramework. Tùy vào từng mục đích xây dựng dự án và khả năng của bạn, bạn có thể tạo ra các khung dự án mẫu kết hợp thư viện Zend Framework 2 để có thể tối ưu hơn.