Ngày nay các framework ra đời nhằm mang lại sự đa tiện dụng cho người lập trình, với cấu trúc, hàm tiện ích phong phú và đơn giản, frameworks thường được các nhà lập trình ưa chuộng làm nền tảng phát triển cho dự án..
Frameworks làm cho sự phát triển của những ứng dụng trở nên trôi chảy hơn, bằng cách cung cấp một cấu trúc cơ bản để xây dựng những ứng dụng đó. Hay nói cách khác, framework thúc đẩy nhanh chóng quá trình phát triển ứng dụng, giúp lập trình viên tiết kiệm được thời gian, tăng sự ổn định cho ứng dụng, và giảm thiểu số lần phải viết lại mã. Framework còn giúp những người mới bắt đầu có thể xây dựng các ứng dụng ổn định hơn nhờ việc tương tác chính xác giữa Database, code và giao diện một cách riêng biệt. Điều này cho phép chúng ta dành nhiều thời gian để tạo ra các ứng dụng web, hơn là phí thời gian để viết các đoạn mã lặp lại trong projects bởi Framework đã cung cấp sẵn các modules nền tảng cần thiết.
Các chức năng chính yếu mà một webapp framework *cần* có là (theo Wiki)
* Security
* Database access and mapping
* URL mapping
* Web template system
* Caching
* Ajax
* Automatic configuration
* Web services
Tuy thành phần Ajax tồn tại nhưng không thực sự quan trọng, bởi vì có khá nhiều Ajax framework độc lập cho người sử dụng lựa chọn (YUI, ExtJS…) với rất nhiều tính năng hữu ích.
Có nhiều ngôn ngữ, nhưng có lẽ PHP là ngôn ngữ thông dụng nhất bởi tính phổ biến và *rẻ tiền* của nó. Do đó có rất nhiều PHP frameworks để có thể lựa chọn, Symfony, CakePHP, Zend framework, Agavi, CodeIgniter, BlueShoes, Xaraya… Thực sự là khó để chọn một câu trả lời chung cho câu hỏi Framework nào là tốt nhất!? Nhưng khi nói đến sự đồ sộ và rắn chắc thì có thể xếp Zend framework (ZF) lên hàng đầu, bởi số lượng components, mô hình MVC chuẩn và sẵn có một cộng đồng hùng hậu hỗ trợ. Zend cũng chính là nhà phát triển ngôn ngữ PHP nên tính chuẩn hoá của ZF là rất cao, hoàn toàn hướng đối tượng. ZF phù hợp với các dự án lớn và có điều kiện phát triển dài lâu (một tương lai hứa hẹn).
I> Zend framework

Giới thiệu
Nhiều người lầm tưởng rằng, học ZF khó hơn những frameworks khác, không hẳn là như vậy, có những kiến trúc rất phức tạp và cũng có những cái đơn giản nhất… Rất nhiều tài liệu nói về ZF, nhiều forum thảo luận về ZF.. Hay nói cách khác, ZF hỗ trợ các đoạn mã từ đơn giản đến phức tạp, dù là beginner hay expert đều hài lòng khi sử dụng nó, dĩ nhiên là quy mô sử dụng sẽ khác nhau.
Download Zend Framework tại http://framework.zend.com/download/latest
Theo chỉ dẫn, ta không cần một quá trình cài đặt nào, tuy nhiên để tiện lợi cần đặt thư mục Zend chứa thư viện vào thư mục include mặc định của PHP đã được cấu hình trong php.ini, chẳng hạn
include_path = “.;D:/WWWRoot/library“
Giả sử bạn cần xử lý một file PDF
require_once ‘Zend/Loader/Autoloader.php‘;
$loader = Zend_Loader_Autoloader::getInstance();$pdf = new Zend_Pdf();// Nạp class
Trong đó Zend/Loader/Autoloader.php có chức năng hỗ trợ việc gọi hàm một cách đơn giản nhất (sẽ đề cập sau)
+ Để nạp một file PDF có sẵn
$pdf = Zend_Pdf::load(‘path/to/file.pdf’);
+Thêm trang
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);//SIZE_LETTER
+ Bỏ trang
unset($pdf->pages[$id]);
+ Thêm đoạn text vào một trang
$page=$pdf->pages[0]; // this will get reference to the first page.
$style = new Zend_Pdf_Style();
$style->setLineColor(new Zend_Pdf_Color_Rgb(0, 0, 0));
$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_TIMES);
$style->setFont($font, 12);
$page->setStyle($style);
$page->drawText(‘example text here‘, 100, ($page->getHeight() – 100));
+ Chuyển nội dung thành PDF
$pdf->save(‘path/to/file.pdf‘);
+ Nếu file đã tồn tại và cần update nó
$pdf->save(‘path/to/file.pdf‘, ‘true‘);
+ Render file PDF ra browser
$pdf->render();
Ví dụ này để thấy rằng, quá trình làm việc với các components của ZF là rất dễ với nhiều tính năng dựng sẵn, xin tạm liệt kê các thành phần chính như sau (tham khảo từ Zend framework in Action):
Core:
Zend_Controller
Zend_View
Zend_Db
Zend_Config
Zend_Filter & Zend_Validate
Zend_Registry
Authentication and Access:
Zend_Acl
Zend_Auth
Zend_Session
Internationalization:
Zend_Date
Zend_Locale
Zend_Measure
Http:
Zend_Http_Client
Zend_Http_Server
Zend_Uri
Inter-application communication:
Zend_Json
Zend_XmlRpc
Zend_Soap
Zend_Rest
Web Services:
Zend_Feed
Zend_Gdata
Zend_Service_Amazon
Zend_Service_Flickr
Zend_Service_Yahoo
Advanced:
Zend_Cache
Zend_Search
Zend_Pdf
Zend_Mail/Zend_Mime
Misc!
Zend_Measure
Một ứng dụng đơn giản & đơn lẻ vẫn có thể sử dụng từng components tách biệt để xây dựng. Để tìm hiểu từng components của ZF là hoàn toàn không khó, nét tinh tuý của nó nằm trong mô hình MVC, xoay quanh một module chính là Front Controller vốn là trái tim của ZF.
Đón xem phần sau: Mô hình MVC
-fov-