1.12k likes | 1.29k Views
Group 3 : Lâm Nguyễn Duy 0612062 Lê Hoàng Dũ 0612073 Trần Hoàng Anh 0612010 Huỳnh Đức Liễu 0612209. Nội Dung Trình Bày. Giới Thiệu What, Why, How? Cấu trúc MVC trong Zend Framework(ZF) Zend Components Giới thiệu và demo các thư viện hỗ trợ trong ZF. Framework là gì?.
E N D
Group 3 : LâmNguyễnDuy 0612062 LêHoàngDũ 0612073 TrầnHoàngAnh 0612010 HuỳnhĐứcLiễu 0612209
Nội Dung Trình Bày • Giới Thiệu • What, Why, How? • Cấu trúc MVC trong Zend Framework(ZF) • Zend Components • Giới thiệu và demo các thư viện hỗ trợ trong ZF
Framework là gì? • Framework: Là một cấu trúc mới của ngôn ngữ, giúp pháttriển các ứng dụng phần mềm. • Bên trong framework có các thành phần cơ bản : • 1. Code library • 2. Scripting language • 3. API • Ngoài ra còn được tích hợp các phần mềm hoặc ngôn ngữ khác
ZF là cái gì? • Đây là một Open Source, giúp ta xây dựng Web với PHP theo kiến trúc MVC. • ZF là một framework. • Nổi tiếng nhất cho PHP • Nó hỗ trợ rất nhiều cho developer. • Hướng đối tượng. • Các thành phần ít lệ thuộc với nhau.
Hình thành và phát triển • 2005 : Dự án được hình thành • Những nhà sáng lập : Zend (of course), IBM, OmniTI. • Bất đầu với các component nhưng nó đã có sự kết hợp với nhau. • Hỗ trợ PHP5, hướng đối tượng. • 7-2007 : version 1.0 ra đời. • 28-04-2010 : version 1.10.4
Nó làm được những gì? • Mạnh mẽ, chất lượng và hỗ trợ hướng đối tượng cho PHP 5. • Zend Framework có hỗ trợ làm việc với Tempalate engine kết hợp cùng tầng View • MVC + PHP ZF • Thư viện hàm : cung cấp 4/5 những gì chúng ta cần. • Hỗ trợ Web 2.0. • Coding standard • http://framework.zend.com/manual/en/coding-standard.html
Tại sao sử dụng ? • Dễ học và tài liệu về ZF rất phong phú và sẵn có • http://www.zftutorials.com/ • http://framework.zend.com/ • Document của ZF • Đây là framework mã nguồn mở nhầm phát triển ngôn ngữ PHP + ZF =
Mục đích khi ZF ra đời • Mang đến sự đơn giản nhất có thể: • Đơn giản để sử sử dụng • Đơn gian để vững vàng và ít lổi nhất • Đơn giản để dễ dàng năng cấp • Đưa ra những xu hướng • Web services • Ajax • Search
Cộng đồng • Những đối tác kỹ thuật : • Adobe, Google, IBM, Microsoft, nirvanix, StrikeIron • Khi gập khó khăn có thể tìm kiếm sự giúp đỡ tại : zfforum.com,zend.vn/forum, zftalk IRC • 35% Website trên thới giới sử dụng PHP • 30.000 công ty trên toàn thới giới đã triển khai
Sử dụng ZF như thế nào ? • Download gói phù hợp với bạn tại • http://framework.zend.com/download/latest • Xem hướng dẫn tại thư mục documentation • Và xem những demo trong thư mục demo • Ta cần config lại 1 số path như trong hướng dẫn tại • http://framework.zend.com/manual/en/learning.quickstart.intro.html • IDE hỗ trợ sẵn ZF là Zend Studio • http://www.zend.com/en/products/studio/downloads
Model – View – Controller • Model • Chứa những class với mục đích giao tiếp CSDL • View • Nơi thể hiện thông tin cho người dùng • Controller • Kết nối giữa Model và View • Xử lý các sự kiện khi người dùng tương tác.
Front Controller • Front Controller nằm ở phần đầu tiên của MVC. • Tất cả các PHP request đều đi qua index.php (bootstrap file). • Front Controller giúp cho bạn: • Khởi tạo request/response cho các đối tượng. • Có thể cài đặt các chức năng và xử lý thông thường. • “Include” paths. • Các cấu hình. • Location cho các thành phần MVC(nếu cần thiết). • Đăng nhập, Database,chứng thực/phân quyền. • Convert URL thành 1 “request” với từng phần riêng biệt. • Router các request đến action controller phù hợp.
Routes URL request • Ví dụ: • Request bình thường: • http://example.com/index.php?controller=news&action=list &id=1 • Request trong ZF : • http://example.com/news/list /1
Param/value chuyển đến action Controller maps chỉ đến tên lớp Action maps chỉ đến tên phương thức Routes URL request • Quy ước: • http://example.com/controller/action/param1/value1... Controller1action1()action2() http request FrontController Bootstrap:index.php Controller2action1()action2()
FC cần 2 file trong public folder Nằm trong thư mục gốc (public folder): • .htaccess chuyển hướng request đếnindex.php • index.php khởi tạoFront Controller
Action Controller • Controller chứa các lớp xử lý những request URL http://example.com/controller/action Mặc định: IndexController • Tổ chức và nhóm các chức năng • Mỗi class (extending Zend_Controller_Action) đại diện cho 1 controller • Action trong những Controller http://example.com/controller/action Mặc định: indexAction() • Đặt tên hàm actionAction() • Ex: nếu hành động là “edit” thì tên ham là editAction()
Các chức năng Controller khác • Các hàm giúp tổ chức và điều khiển luồn • init() – gọi bởi constructor • preDispatch() – gọi trước khi thực hiện hàm • postDispatch() – gọi sau khi thực hiện hàm. • Các hàm thường dùng: • forward(), redirect(), getParam(), getRequest(), getResponse(),render()
View • Scripts (templates) • PHP sử dụng script templates để thể hiện data • Chỉ thể hiện chứ không xử lý ở đây. • Tên mặc định: “myaction.phtml” • Helpers • Là những lớp và phương thức được cung cấp để tái sử dụng các hàm phục vụ View. Ví dụ: <p>He gave me <?php echo $this->formatCurrency(10);?>.</p> He gave me £10.00. • Assigning data to the view
View • Assigning data to the view • Zend_View có hàm assign() để gán dữ liệu. • Assign biến đơn giản: • VD: $view->assign('title', 'Hello World!'); • Assign mảng: music = array('title'=>'Abbey Road', 'artist'=>'The Beatles'); music = array('title'=>'The Wall', 'artist'=>'Pink Floyd'); view->assign($music);
Models • Models chứa các business logic, làm nhiệm vụ giao tiếp với CSDL. • Nó có thể extended từ: • Zend_Db_Table – For database abstraction • Zend_Feed_Element – For RSS abstraction • Zend_Service - for accessing both public and private
Models Example <?php // model: Busyflag.php class Busyflag { // The table name protected $name = ‘SYSFLAGS'; // old-fashioned “System 36” table // isSiteUp: return true if up, false if down public function isSiteUp() { // one record, with key "B" $sql = "select BZYFLG from {$this->name} where RECID = 'B'"; $row = SBSDbhelp::getOneRow($sql); // true if Y, false otherwise. return $row['BZYFLG'] == 'Y'; } //(public function isSiteUp()) } //(class Busyflag) // usage (from a preDispatch front controller plugin) $busyFlag = new Busyflag(); if (!$busyFlag->isSiteUp()) { // Take user to "site down" page. $request->setControllerName("Down"); $request->setActionName("index"); } //(if (!$busyFlag->isSiteUp()))
Tools • Zend Studio cho Eclipse sẽ giúp bạn xây dựng Web theo MVC. • Bản free trial: http://www.zend.com/en/products/studio/
Components Ghi chú: Zend/Db.php = Zend_Db Zend/Db/Table.php = Zend_Db_Table
Component categories • MVC • Formatting • Ajax • Identity, Authentication, and Authorization • Forms • Datastore • Web Services • Enterprise • Debugging, Logging, and Testing • I18n and L10n • Mail • Infrastructure
MVC Component(1) • Zend_Controller • Zend_Layout • Zend_View
Formatting • Zend_Text • Zend_Paginator
Zend_Text_Figlet • LàmộtthànhphầnchophéptạorachuỗiFiglet. • ChuỗiFigletlàchuỗinghệthuậtđượctrìnhbàytheodạng:
Zend_Text_Figlet • Cácphươngthứchỗtrợ: • setConfig($config): ThiếtlậpcáccấuhìnhchochuỗiFiglet • setFont($font): Thiếtlập font chochuỗiFiglet • setOutputWidth($outputWidth): Thiếtlậpđộrộngcủachuỗi • setHandleParagraphs($handleParagraphs): Trảvềgiátrị Boolean chobiếtcóxuốngdòng hay không
Zend_Text_Figlet • Cácphươngthứchỗtrợ: • setRightToLeft($rightToLeft): Địnhnghĩacáchtrìnhbàychuỗi: • DIRECTION_LEFT_TO_RIGHT • DIRECTION_RIGHT_TO_LEFT • setJustification($justification): Canhlề: • 0: Canhtrái • 1: Canhgiữa • 2: Canhphải
Zend_Text_Figlet • Vídụxuấtrachuỗi “PHP” đơngiản
Zend_Text_Table • Zend_Text_Tablelàmộtthànhphầnđểtạora table • Zend_Text_Tablemặcđịnh sử dụng bộ mã UTF-8chocả input và output • ĐốitượngZend_Text_Tablechứanhữngdòngvàcột, đượcbiểudiệnthông qua: • Zend_Text_Table_Row • Zend_Text_Table_Column.
Zend_Text_Table • Cácphươngthứchỗtrợ: • setDefaultColumnAlign($columnNum, $align): Thiếtlậpcáchcanhlềchocộtmặcđịnh • setInputCharset($charset): Thiếtlậpmã input • getInputCharset(): Lấymã input • setOutputCharset($charset): Thiếtlậpmã output • getOutputCharset(): Lấymã output • appendRow($row): Thêmmột dòng
Zend_Text_Table • Cácphươngthứchỗtrợ: • setConfig(Zend_Config $config): Thiếtlậpcấuhình ban đầu • setColumnWidths(array $columnWidths): Thiếtlậpđộrộngcột
Zend_Text_Table • Vídụtạota table đơngiản:
Additional categories • Zend_Search_Lucene • Zend_Pdf
Zend_Search_Lucene • Một text search engine được viết trên PHP 5. Nó chứa các index trên file và không yêu cầu một database server, nên có thể search trên bất kì PHP-driven website nào. • Zend_Search_Lucene hỗ trợ những tính năng sau: • Ranked searching - hiển thị kết quả phù hợp nhất lên trên • Hỗ trợ nhiều kiểu truy vấn: phrase query, boolean query, wildcard query, proximity query, range query, ... • Search theo field cụ thể (ví dụ. title, author, contents)
Zend_Pdf • Zend_Pdf là một công cụ giúp làm việc với file pdf.Nó có thể load, create, modify và save file pdf.Zend_Pdf hỗ trợ: • Tạo mới hoặc load 1 file đã có. • Thao tác các trang trong một file. Thay đổi thứ tự trang, thêm trang mới, loại bỏ các trang từ một file. • Giúp vẽ hình đơn giản(các đường thẳng, hình chữ nhật, hình đa giác, hình tròn, bầu dục và các lĩnh vực). • Hỗ trợ nhiều font size. • Xoay. • Vẽ ảnh.
Creating or loading • Creating : • $pdf = new Zend_Pdf(); • Loading : • $file = '/path/to/example.pdf'; • $pdf = Zend_Pdf::load($file);
Creating pages Pdf • Tạo biến $page : • $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4); • $page = new Zend_Pdf_Page($width, $height); • Tạo page trong pdf: • $pdf->pages[] = $page;