Zend Framework 2 – một framework PHP nên dùng

Trước đây, tôi đã từng có sự chia sẻ với mọi người về “Những lý do chọn Zend Framework để phát triển ứng dụng”- trong bài viết trước tôi chủ yếu nói về Zend Framework 1 và có một khúc mở ở cuối bài đề cập tới Zend Framework 2 . Hôm nay, tôi xin chia sẻ với các bạn những điều thú vị, những điểm mới trong Zend Framework 2 mà theo tôi rất đáng để chúng ta theo học và triển khai ứng dụng.

Trước đây, tôi đã từng có sự chia sẻ với mọi người về “Những lý do chọn Zend Framework để phát triển ứng dụng”- trong bài viết này tôi chủ yếu nói về Zend Framework 1 và có một khúc mở ở cuối bài đề cập tới Zend Framework 2. Hôm nay, tôi xin chia sẻ với các bạn những điều thú vị, những điểm mới trong Zend Framework 2 à theo tôi rất đáng để chúng ta theo học và triển khai ứng dụng.

ZF2 được phát triển dựa trên sự thịnh vượng của phiên bản đầu tiên – trên 15 triệu download tính tới cuối năm 2012. Là một open source hoàn toàn miễn phí cho việc phát triển các ứng dụng web cũng như các web-service trên nền tảng PHP 5.3+. Trong ZF2, áp dụng 100% lập trình hướng đối tượng, và những tính năng cải tiến mới của PHP 5.3 như namespace, lambda functions, closures…

1 – Chặng đường phát triển của Zend Framework

Trước tiên hết, chúng ta cùng nhìn lại chặng đường hình thành phát triển của Zend Framework từ phiên bản close beta cho tới tận hôm nay.

  1. Mùa hè 2005, dòng code đầu tiên cho dự án ZF được viết lên
  2. Mùa thu 2005, lần đầu tiên công bố trong sự kiện ZendCon hằng năm
  3. 3/2006: Phiên bản 0.1.0 được công bố, là 1 framework PHP open đến với cộng đồng
  4. 7/2007: Phiên bản 1.0.0 ra đời. Cơ chế MVC, Data Row Gateway, Authenticate… dự án vẫn tiếp tục phát triển
  5. 3/2008: Phiên bản 1.5 ra đời. Zend_Layout, Zend_Form và sự nâng cấp cho Zend_View
  6. 9/2008: Phiên bản 1.6 với sự tích hợp Dojo toolkit và test function
  7. 11/2008: Phiên bản 1.7 với sự cải tiến lớn về performance
  8. 4/2009: Phiên bản 1.8 với sự ra đời của Zend_Application, chế độ MVC đầy đủ hơn
  9. 9/2009: Phiên bản 1.9 cho ra đời tính năng đọc RSS (Zend_Feed_Reader)
  10. 1/2010: Phiên bản 1.10 ra đời cùng với việc ghi RSS (Zend_Feed_Writer)
  11. 2/2010: Dự án ZF2 bắt đầu khởi xướng, song song đó dự án ZF1 vẫn tiếp tục phát triển.
  12. 11/2010: Phiên bản 1.11 với việc detect mobile, phát triển ứng dụng web trên nền mobile
  13. 6/2012: ZF2 lần đầu tiên công bố phiên bản stable (phiên bản chính thức) ra đời với những cải tiến đáng kể. Bộ library của ZF2 chỉ còn 3MB so với 22MB của ZF1, một cải tiến nhìn thấy rõ nhất trong ZF2
  14. 1/2013: ZF 2.1 bổ sung rất nhiều tính năng, nâng cấp toàn diện những component hiện hành trong ZF2. Bổ sung hỗ trợ Oracle trong ZendDb (trong các version trước 2.1 không hỗ trợ DBMS Oracle)
  15. 5/2013: ZF 2.2 stable ra đời với việc hỗ trợ NoSQL Redis. Đồng thời, trước đó một tháng, lời công bố ngưng support cho ZF1 được đưa ra, ZF1 sẽ chính thức ngừng support vào 1/2014
  16. 7/2013: ZF 2.2.2 fix rất nhiều bug liên quan tới security của website. Đưa ra kế hoạch phát triển cho ZF 2.3 vào tháng 9/2013

Với một quá trình phát triển liên tục, đều đặn, không ngừng nâng cấp tính năng, đó là điều đầu tiên tôi muốn chia sẻ. Với một framework luôn được nâng cấp, chúng ta – những con người đam mê lập trình – cũng sẽ được nâng cấp theo. Khi đến với ZF, chúng ta không chỉ học cái cách code mà còn học về kiến trúc ứng dụng, điều này sẽ giúp chúng ta dễ làm chủ những framework khác cũng như có thể tự xây cho mình một framework riêng.

2 – ZF2 dựa trên PHP 5.3 và những ưu thế

ZF2 dựa hoàn toàn vào PHP 5.3 với những tính năng như namespace, lambda functions, closure… nên điều đầu tiên tôi muốn chia sẻ ở đây đó là khái niệm này.

  1. Namespace:
    • Nếu như trước đây chúng ta không thể đặt 2 class có cùng tên, thì với namespace chúng ta có thể làm điều đó.
    • Nếu như trong ZF1, những tên class phải dài loằng ngoằng vì để tránh trùng lấp tên với nhau thì với namespace chúng ta hoàn toàn chủ động tránh được điều này.
    • Namespace một khái niệm hoàn toàn không có gì xa lạ đó với những ai đã từng làm việc với các ngôn ngữ khác như .Net, hay được gọi là packet trong Java. Nên điều này cũng sẽ không là một trở ngại quá lớn cho việc học nó ở PHP
  2. Lambda function và Closure:
    • Nếu là một dân web và đã từng làm việc với javascript thì cái khái niệm lambda function và closure không gì là mới mẻ. Nhưng việc được dựng lên trong PHP đã thực sự mang lại nhiều điều thú vị.
    • Lambda function/Closure là một function vô danh, được cài đặt ngay bên trong 1 function khác, nó rất hữu dụng trong việc cho tính năng callback trong ứng dụng

3 – Từ bỏ MVC đến với một kiến trúc mới

Hầu như MVC là một kiến trúc rất tốt trong suốt một khoảng thời gian dài vừa qua, tuy nhiên, MVC cũng là một mô hình già cằn cõi và cần có một mô hình trẻ hơn thay thế – đó là mô hình MOVEModels Operations Views Events
Ở đây, chúng ta có thể hiểu Operations là Controllers bên mô hình cũ MVC, vậy tất có thể một nhân tố mới Events. Đối với ZF2, mọi thứ đều là Event, và dựa vào event chúng ta có thể dễ dành mở rộng code ứng dụng hơn.

4 – Nâng cấp performance

Trong ZF2, cơ chế autoload được thay đổi để có thể nâng cao mặt performance của ứng dụng. Thay cho cơ chế quét cạn trong ZF1, thì với ZF2 đó là cơ chế vẽ đường cho hươu chạy. Tuy nhiên, với ZF2, chúng ta vẫn có thể để chế độ quét cạn để ứng dụng từ dò đường, nhưng khi triển khai lên môi trường thật, chúng ta dễ dàng chuyển đổi cơ chế để tăng tốc trên môi trường thật.

Để nâng cấp cho tốc độ website, ZF2 đã thay đổi việc config từ file ini thành PHP array – một đối tượng cơ sở trong PHP – dễ học, dễ hiểu, dễ dùng. Ngoài ra, với PHP array thì còn dễ dàng cache lại để tăng tốc cho website.

Lời kết

Với 4 điểm nhấn bên trên, với tôi ZF2 là một framework rất đáng để học và triển khai ứng dụng – đặc biệt là những ứng dụng có tầm quy mô lớn. Và tôi hy vọng với sự chia sẻ của tôi, sẽ phần nào giúp mọi người cảm thấy hứng thú hơn với framework do chính công ty đã phát triển PHP tạo nên.

GV Trần Minh Quang

Khóa học lập trình Zend Framework | Zend Framework 2 – Một Framework PHP nên dùng

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *