VOV's world

Archive for September, 2009

Web app Framework (P1)

by vietfov on Sep.10, 2009, under IT

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

wepappf1

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_onceZend/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-

Leave a Comment more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...