Phần 1 - Cách xử lý 1 request của Zend Framework 1.x - Work Flow

Phần 1 - Cách xử lý 1 request của Zend Framework 1.x - Work Flow

Đa số chúng ta làm việc với Zend Framework (ZF) nhưng cũng không nắm rõ lắm luồn dữ liệu được xử lý như thế nào? Một request URL đến, thì ZF đã làm gì để rã ra thành một module, controller, action và những tham số input để từ đó chúng ta tiến hành xử lý?

Cách xử lý 1 request của Zend Framework 1.x - Work Flow

Bài viết mang một khía cạnh minh họa và giảng lược bằng hình ảnh để giúp những người đã từng có kinh nghiệm làm việc với ZF hiểu rõ cơ chế vận hành như thế nào.

Để rào trước đón sau, mình chỉ dám nói đây là tiến trình xử lý của ZF1 chứ không dám khẳng định ZF2 cũng y như vậy. ZF2 đã có 1 số cải tiến rất rõ về bộ library không biết có thay đổi về work flow không thì mình vẫn chưa thể khẳng định tại thời điểm này.

Đây là tiến trình đầu tiên khi một user gửi 1 request lên website ZF, tất cả luồng dữ liệu đều được tập trung vào tập tin index.php (nếu chúng ta chưa thay đổi gì thì nó sẽ nằm trong thư mục public của ứng dụng). Tại vị trí này, ứng dụng sẽ kích hoạt Zend_Application và gọi vào tầng boostrap của ứng dụng. Nguyên sơ khởi khi cài đặt ZF thì class Bootstrap trắng trơn, và nếu chúng ta viết không đúng cách thì website chúng ta ra “trắng tinh” hoặc thậm chí quăng lỗi.

Trong Bootstrap, ZF sẽ khởi tạo đối tượng Front Controller (FC) – đây là 1 đối tượng khởi động 1 lần duy nhất bởi ZF, chúng ta không thể new mới mà chỉ có thể sử dụng lại – và sau đó đối tượng này sẽ kích hoạt toàn ứng dụng ZF bởi hàm Dispatch

Sau khi Bootstrap kích hoạt ZF bởi việc gọi hàm Dispatch thì sẽ đến tiến trình như hình bên trên, tiến trình này được chia là 3 khối Front Controller, Plugin Broker, Router.

Đầu tiên hết, Front Controller sẽ khởi tạo đối tượng request, đối tượng response nếu nó chưa được khởi tạo lần nào (vấn đề này như thế nào, tôi sẽ trình bày rõ hơn trong phần sau) rồi đem 2 đối tượng này quăng cho khối Plugin Broker xử lý.

Plugin Broker nhận được yêu cầu từ Front Controller, sẽ kiểm tra xem tại đây có 1 controller plugin nào được viết với hàm routeStartup không, nếu có thì chạy hàm này, và sau đó thì gửi kết quả về cho Front Controller. Tại thời điểm này, URI do người dùng nhập vào vẫn chưa được rã thành module, controller, action và những tham số tương ứng. Sau khi Front Controller nhận được kết quả từ Plugin Broker sẽ kích hoạt khối Router

Router nhận thông điệp từ Front Controller, sẽ tiến hành rã URI của người thành module, controller, action và những tham số truyền vào tương ứng bằng việc tìm xem trong danh sách routes có cái nào khớp với URI mà người dùng đang yêu cầu. Router sẽ “nhúng” những tham số này vào đối tượng request được sinh ra ở bước đầu để có thể dùng nếu cần. Router kết thúc quá trình của nó bằng việc gửi thông điệp lại cho khối Front Controller. Cho nên tại đây, nếu ứng dụng chúng ta có quá nhiều router (rule rewrite url) thì sẽ làm cho tiến trình này chậm đáng kể, ảnh hưởng trực tiếp đến tốc độ website.

Kết thúc cho tiến trình này bằng việc khối Front Controller kiểm tra xem có 1 controller plugin nào viết hàm routeShutdown không, nếu có thì thực hiện và sẽ đẩy tới 1 tiến trình khác

Theo Minh Quang Trần

Bạn thấy bài viết này như thế nào?: 
Average: 9.7 (3 votes)
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Workshop Photography - Cú bấm máy & Chuyện hậu kỳ trong nhiếp ảnh

Workshop Photography - Cú bấm máy & Chuyện hậu kỳ trong nhiếp ảnh

Buổi Workshop diễn ra vào lúc 9h sáng chủ nhật ngày 10/11/2019. Tại Văn phòng Keyframe : 06 Phan Đình Giót, P2, Q Tân Bình.

Apple TV sẽ cho phép sử dụng bàn phím bluetooth

Apple TV sẽ cho phép sử dụng bàn phím bluetooth

Rất nhiều người dùng cảm thấy khó chịu khi sử dụng điều khiển từ xa quá đơn điệu trên Apple TV. Tuy nhiên trên bản cập nhật tiếp theo, Apple TV đã cho phép dùng bàn phím Bluetooth để việc trải nghiệm trở nên dễ dàng hơn.

Việc ly dị cũng có thể được thực hiện qua Facebook

Việc ly dị cũng có thể được thực hiện qua Facebook

Cần phải làm thế nào nếu việc gửi đơn ly dị ra tòa gặp trở ngại do người chồng hoặc vợ không thể

Công ty diệt chuột T&C

 

Diet con trung