> > > Tìm hiểu Zend framework, học zend framework nên bắt đầu từ đâu

Tìm hiểu Zend framework, học zend framework nên bắt đầu từ đâu

Năm 2005,Andi Gutmans của Zend Technologies đã công bố Zend’s PHP Collaboration Project,và giới thiệu Zend Frameword.Phiên bản 1.0 được phát hành ngày 7/2007 và các phiên bảng mới được cập nhật thường xuyên sau đó.Phiên bảng mới nhất là 1.11
Dương Vật Giả Lcd Butterly Cao Cấp
 
Dương vật giả 2 Pin
 

Bán tài liệu zend framework (500k)

Yahoo: buctuonglua_12a8 - 0933.381.903

Học Zend Framework bắt đầu từ đâu?

Hoàng Nguyễn đã được nhận rất nhiều các câu hỏi như thế này từ các bạn lập trình, Zend rất linh hoạt, bảo mật tốt, cộng đồng rộng lớn, phát triển rất nhanh,… Zend Framework là một trong những thư viện PHP được đánh giá là đầy đủ nhất hiện nay và được các công ty lớn trong lĩnh vực CNTT ở Việt Nam và trên thế giới ưu chuộng.

Và đặc biệt Zend Framework là một “món lập trình” khó nuốt đối với các bạn Lập trình viên khi mới bắt đầu tìm hiểu về Zend Framework.

Ở Việt Nam, hãy cùng xem các Công ty lớn sử dụng Zend Framework cho các dự án như thế nào:

  • Fpt Online:
  1. nhacso.net
  2. banbe.net
  3. thethao.vnexpress.net 
  • VNG (tiền thân là VinaGame):
  1. Zing Mp3
  2. Zing Me 
  • Và các công ty sử dụng Zend Framework để thực hiện oursouce các dự án nước ngoài hoặc các dự án lớn như:
  1. Sutrix Media Corporation
  2. HKDA Viet Nam Corporation
  3. Greystones Data System VN
  4. Smartbooks Co.ltd
  5. OTS Corporation
  6. Ominext Corporation
  7. CNC Corporation
  8. GemMind Corporation

Trang báo điện tử hàng đầu USA BBC News được viết hoàn toàn từ Zend Framework và còn nhiều trang khác nữa.

Điều này cho chúng ta thấy rằng Zend Framework được ứng dụng rất mạnh mẽ vào các công ty internet hàng đầu Việt Nam và thế giới. Đây là cơ hội lớn cho các bạn theo học và muốn phát triển sự nghiệp với Zend Framework.

Xem thêm Lịch khai giảng tại:

 Zend Framework – tương lai của bạn

Vậy học Zend Framework nên bắt đầu từ đâu?

  • Bạn phải là một người có tư duy lập trình tốt, có đam mê với nghề lập trình
  • Bạn phải làm việc được với ngôn ngữ lập trình PHP kết nối với CSDL MySQL.
  • Nắm rõ cấu trúc hướng đối tượng với OOP là một điều kiện cần và đủ để bạn có thể theo học được Zend Framework.
  • Nghiên cứu về Regular expressions và .htaccess cho web
  • Có được kiến thức của các bộ Framework khác cũng là một lợi thế khi các bạn tìm hiểu và theo học Zend.

Học Lập trình ứng dụng Zend Framework tại Hoàng Nguyễn, bạn sẽ được cung cấp các kiến thức:

A. Cấu trúc của Zend, phân tích Zend Framework:

  1. Cài đặt Zend Framework
  2. Structure trong Zend – mô hình MVC
  3. Multi modules
  4. Sử dụng Layout trong Zend
  5. PDO – Tương tác CSDL
  6. Model basic trong Zend
  7. Sử dụng View Helper  trong Zend
  8. Ajax trong Zend
  9. Basic Route – Tạo friendly URL

B. Tìm hiểu nâng cao về Zend Framework để có thể xây dựng các dự án phức tạp:

  1. Autoload trong Zend
  2. Zend Config
  3. Zend DB
  4. Zend Registry
  5. Zend Session
  6. Zend Validate
  7. Zend Filter
  8. Zend Layout
  9. Zend view helper
  10. Zend Auth
  11. Zend Controller Plugin
  12. Zend Acl
  13. Zend Log
  14. Zend Controller Router

Chúc các bạn thành công trong Nghề lập trình với Zend Framework sau khi tham gia khóa học lập trình ứng dụng với Zend Framework tại Hoàng Nguyễn.

Tìm hiểu Zend framework nên bắt đầu từ đâu ? (phần 1)

Bạn muốn tìm hiểu về Zend framework ? .Bạn muốn nhanh chóng xây dựng một ứng dụng web sữ dụng zf ?

Việc tìm hiểu zend framework cũng như các php framework khác điều đầu tiên là bạn pải có kiên thức tương đối về php .Tiếp đến bạn cần tìm hiểu kiến thức cơ sở sau :

- Framework là gì ?

Framework là một thư viện các lớp đã được xây dựng hoàn chỉnh , bộ khung để phát triển các Phần mềm ứng dụng. có thể ví framework như tập các “Vật liệu” ở từng lĩnh vực cho người lập trình viên, thay vì họ phải mất nhiều thời gian để tự thiết kế trước khi dùng. Do vậy, người lập trình viên chỉ cần tìm hiểu và khai thác các vật liệu này rồi thực hiện ( tức lập trình ) để gắn kết chúng lại với nhau, tạo ra sản phẩm.

Để thiết kế một game đua xe, nếu không có bộ Framework chuyên dụng cho game, người lập trình game phải tự tạo ra: khung xe, bánh xe, người, đường đi … rồi mới tính đến chuyện lắp ghép chúng lại với nhau để tạo ra không gian cho game; Nếu có sẵn bộ Framework thì lập trình viên chỉ viết lệnh lấy chúng ra từ Framework và ghép chúng lại. Có thể hình dung Framework bao gồm các vật liệu như gạch, cát, xi măng, sắt … nhưng tùy theo cách thiết kế của người kiến trúc sư mà tạo ra những căn nhà với hình dạng khác nhau.

- Mô hình MVC là gì ?

MVC = Model + View + Controller.
Model: chính là dữ liệu (cụ thể hơn trong ZF sẽ là các class làm nhiệm vụ thao tác trực tiếp xuống DBMS).

Mô hình Views có nhiệm vụ liên kết với Mô hình Model và xuất các dữ liệu ra trình duyệt theo nhu cầu đòi hỏi của người tiêu dùng (user). Điển hình là các văn bản HTML.

View: làm nhiệm vụ render trang web từ các action do controller truyền sang + dữ liệu từ model (có thể hiểu nó như là template render).
Controller: chính là phần cốt lỗi, điều hành trang web của bạn, 1 trang web có thể có nhiều module (có thể hiểu như component của Joomla!), 1 module có thể có nhiều controller. Một controller sẽ gồm nhiều action, ví dụ: trong forum sẽ có PostController bao gồm các action như listAction, readAction, writeAction,…


CÁC BƯỚC XÂY DƯNG WEB SỬ DỤNG ZEND FRAMEWORK

- Tạo câu trúc thư mục theo mô hình MVC
 

CODE

zf-tutorial/
———/application
————-bootstrap.php
————-/controllers
————-/models
————-/layouts
——————/default.phtml
————-/views
——————-/filters
——————-/helpers
——————-/scripts
———/library
———/public
————-/images
————-/scripts
————-/styles-
————-index.php

Tìm hiểu Zend framework nên bắt đầu từ đâu ? (phần 2)

Một phương pháp có thể nâng cao tính năng bảo trì của ứng dụng bằng việc tách riêng code của chúng ta thành ba phần Model-View-Controller :

Mình xin nhắc lại mô hình kiến trúc MVC :

Một phương pháp có thể nâng cao tính năng bảo trì của ứng dụng bằng việc tách riêng code của chúng ta thành ba phần Model-View-Controller :


2.1.2.1. Model

Model Là một đối tượng hoặc tập hợp các đối tượng biểu diễn cho phần dữ liệu của chương trình ứng dụng.
Thành phần model này được chúng ta xây dựng thành các lớp kế thừa từ lớp Zend_Db_Table hoặc Zend_Db_Table_Abstract được đặt trong thư mục application/models của ứng dụng. Mổi lớp sẽ đảm nhận việc kết nối và thao tác đến table tương ứng trong cớ sở dữ liệu.

2.1.2.2. View

Là phần giao diện với người dùng. bao gồm việc hiện dữ liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn lựa…, để người dùng có thể thêm, xóa, sửa, tìm kiếm và làm các thao tác khác đối với dữ liệu trong hệ thống. View làm nhiệm vụ render trang web từ các action do controller truyền sang kết hợp với dữ liệu từ model, có thể hiểu View đóng vai trò như là template render.

Thành phần view này được đặt trong thư admin/views và default/views .
Trong thư mục views này có 3 thành phần :

Scripts :
Chứa các thư mục gồm các file ánh xạ đến các controller/action để hiển thị trang giao diện tương ứng .

helpers :
Trong thư mục này chứa các các lớp mà chúng ta tạo ra và các lớp này sẽ được nạp tự động cho đối tượng Zend_view thông qua Zend_View_Helper để giúp chúng ta dễ dàng gọi đến hàm được xây dựng trong lớp này mà không cần phải khai báo trước vì nó được xem là một thành phần trong thư viện của Zend (được nạp tự động).

filters : Tương tự như thành phần helpers,filters chứa các lớp giúp cho chúng ta có thể thay đổi hoặc xóa những dữ liệu không mong muốn trong quá trình nhập liệu thông qua bộ lọc này.

2.1.2.3. Controller

Là phần điều khiển toàn bộ logic về hoạt động của giao diện, tương tác với thao tác của người dùng và cập nhật, thao tác trên dữ liệu theo đầu vào nhận được và điều khiển việc chọn phần “Hiển thị” thích hợp để truyền dữ liệu tới người dùng.
Controller làm nhiệm vụ điều hành trang web của bạn, 1 trang web có thể có nhiều module , 1 module có thể có nhiều controller. Một controller sẽ gồm nhiều action .
Zend Framework sử dụng đối tượng Front Controller để quản lý các Request được gởi đến Web server. Và dựa trên Request đó, nó sẽ gọi các lớp xử lý Model và trả về kết quả trình bày với các lớp View.

Ví dụ: Trong website eshop sẽ có UserController bao gồm các action như:loginAction,registerAction,displayprofileAction,…

Bootstrap :

Ngoài ra trang web của bạn cần có 1 file quan trọng chính là bootstrap, làm nhiệm vụ “đón đầu” tất cả các request vào, sau đó khởi tạo controller và dispatch request đến controller tương ứng.

Điều đó có nghĩa là thay vì bạn tổ chức với đầy đủ chức năng từ kết nối đến database , xữ lý và hiển thị kết quả ra trình duyệt chỉ trong một file thì với mô hình kiến trúc MVC này bạn tách làm 3 thành phần riêng biệt (có thể ví như việc phân công lao động theo chuyên môn của mổi người vậy) mổi phần sẽ đảm nhiệm môt nhiệm vụ đặc trưng của mình (

một thành phần (có thể nhiều class ) cho kết nối , xữ lý database - một file lo việc hiển thị kết quả ra trình duyệt và một cho xữ lý điều khiển tương tác hai thằng còn lại .

)

2.1.2.5. Cơ chế hoạt động của ZF

Trong ZF Tất cả các yêu cầu (request) đều được xữ lý tập trung,tất cả các request đều được front controller gửi (dispatch)tới controller actions mổi khi phát hiện có bất kỳ request nào xãy ra.
Zf còn hổ trợ plugin ở mọi cấp xữ lý và bạn có thể xây dựng plugin một cách linh động để bạn có thể thay đổi những thành phần cụ thể cho ứng dụng riêng của bạn để nó không phải làm quá nhiều công việc .

Zend_View là hệ thống view template trong Zf,nó cung cấp một hệ thống template PHP cơ bản .Không giống như Smarty,Zend_View cung cấp một hệ thống Plugin helper cho phép chúng ta có thể trình bày code một cách sáng tạo để có thể tái sử dụng .nó được thiết kế để cho phép chúng ta override các yêu cầu cụ thể và thậm chí nó có thể được thay thế hoàn toàn bằng một hệ thống template khác chẳng hạn như Smarty .

Zend_Db_Table thiết lập một cách thức truy cập vào một table trong database để tạo thành một thành phần model cơ bản trong mô hình kiến trúc MVC .

Hình sau sẽ giải thích cho chúng ta thấy cơ chế hoạt động này :

khi có request từ người dùng thì lập tức bootstrap file (index.php) sẽ đón nhận request này và giao nhiệm vụ điều khiển hướng truy cập cho Front Controller ,Front Controller sẽ chọn và gọi action tương ứng .sau đó Action Controller này tương tác với Zend_Db_Table (Model) và trả về kết quả xử lý cho Zend_View (View) .và cuối cùng hiển thị kết quả (response) ra trình duyệt .

Địa chỉ Url định tuyến mặc định :
Khi có một request được gửi thì request này mặc định có địa chỉ URL :

CODE

  /Controller/action
  /Controller/action/key1/value1/key2/value2
  /module/Controller/action
  /module/controller/action/key1/value1/…



Controller ở đây chính là một lớp (class) được đặt trong thư mục Controllers ,Acion thực chất là một hàm được định nghĩa trong Controller đó .

Tìm hiểu Zend framework nên bắt đầu từ đâu ? (phần 3)

Kiến trúc MVC của Zend framework như đã trình bày ở phần trên nên không có gì là khó hiểu với kiến trúc thư mục vừa tạo,đều cần lưu ý là trong ứng dụng này tách biệt thành 2 modules riêng đó là admin và default modules với Controllers,Views và layout riêng biệt vì vậy chúng ta cần phải chỉ cho front Controller biết được Controller của chúng ở đâu. có 2 cách để làm việc này :

Cấu trúc tổ chức của website bán hàng mỹ nghệ
UpAnh.com
Kiến trúc MVC của Zend framework như đã trình bày ở phần trên nên không có gì là khó hiểu với kiến trúc thư mục vừa tạo,đều cần lưu ý là trong ứng dụng này tách biệt thành 2 modules riêng đó là admin và default modules với Controllers,Views và layout riêng biệt vì vậy chúng ta cần phải chỉ cho front Controller biết được Controller của chúng ở đâu. có 2 cách để làm việc này :
cách 1 : Thêm Controller Directory cho Zend_Controller_Front

// cài đặt controller
CODE

$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);

//Nạp Controller cho 2 modules admin và default
$frontController->addControllerDirectory(’./application/modules/admin/controllers’, ‘admin’);
$frontController->addControllerDirectory(’./application/modules/default/controllers’, ‘default’);



Cách 2 : Hoặc Nạp Thêm module cho fontcontroller

CODE

$frontController->addModuleDirectory(’application/modules’);
$frontController->setDefaultModule(’default’);



Một điểm cần lưu ý nữa là bạn phải đặt thư viện zend vào trong thư mục library.Thư viện My của chúng ta chứa các thành phần như Session,Controller,view,Plugin,Form,.. là các lớp kế thừa từ các lớp trong Zend, nhằm xây dựng lại các lớp này cho phù hợp với ứng dụng của ta hơn.Có thể gọi thư mục My là một framework riêng của chúng ta đã xây dựng bằng cách bằng cách kế thừa từ zf.
Sau đó tạo một file bootstrap có tên là index.php đặt vào thư mục gốc của website (folder : eshop) và một file cấu hình để kết nối database có tên config.ini trong folder application.
Như đã trình bày ở trên file bootstrap sẽ “đón đầu” tất cả các request, sau đó khởi tạo controller và dispatch request đến controller tương ứng.
Để làm dược điều này bạn cần phải tạo file .htaccess trong thư mục eshop.
File .htaccess với nội dung sau :

CODE

RewriteEngine on
RewriteRule !.(js|ico|gif|jpg|png|css)$ index.php



Với câu lệnh này, file .htaccess sẽ kiểm tra những Request URL nào không kết thúc với các đuôi trên thì sẽ được chuyển lại về trang index.php. Và trang index.php sẽ thực hiện chức năng bootstrap của mình .

Cụ thể file Bootstrap sẽ chứa nội dung để thực hiện các chức năng như:
1. Cho phép hiện Lỗi khi có bất kỳ sự cố nào

CODE

< ?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
date_default_timezone_set('Europe/London');



2. Thêm thư mục /library/ và /models vào include path để có thể truy xuất tới các lớp trong Zend Framework và map đến các lớp trong models.

CODE

set_include_path(
get_include_path() . PATH_SEPARATOR .
‘./library’ . PATH_SEPARATOR .
‘./application’ . PATH_SEPARATOR .
‘./application/models’
);



3. Gọi Autoloader để gọi các lớp một cách tự động, Không phải mỗi đầu file phải include hay require class cần dùng.

CODE

//load class với zf version 1.8
require_once ‘Zend/Loader/Autoloader.php’;
$loader = Zend_Loader_Autoloader::getInstance();
$loader->setFallbackAutoloader(true);
$loader->suppressNotFoundWarnings(false);



4. Kết nối đến cơ sở dữ liệu//gán file cấu hình database (config.ini) vào biến config

CODE

$config = new Zend_Config_Ini(’./application/config.ini’, ‘general’);
//db tạo mảng cấu hình kết nối cơ sở dữ liệu
$params = array(
‘host’ => $config->database->host,
‘username’ => $config->database->username,
‘password’ => $config->database->password,
‘dbname’ => $config->database->name
);
//kết nối cơ sở dữ liệu gán vào đối tượng $db .
$db = Zend_Db::factory($config->database->type, $params);
$db->query(”SET NAMES ‘utf8′”);

// tạo adapter mặc định bằng Zend_Db_Table
//Zend_Db_Table_Abstract::setDefaultAdapter($db);
Zend_Db_Table::setDefaultAdapter($db);



5. Khởi tạo và đăng ký session

CODE

//đăng ký và khởi tạo session
Zend_Session::start();
//đăng ký session mặc định
$defSession = new Zend_Session_Namespace(’Default’, true);
Zend_Registry::set(’defSession’, $defSession);
//đăng ký session cho giỏ hàng
$cart=new Zend_Session_Namespace(’cart’);
Zend_Registry::set(’cart’,$cart);



6. Tạo bộ nhớ đệm cache// tạo cache
CODE


$frontendOptions = array(’lifetime’ => $config->cache->maxLifetime, ‘automatic_serialization’ => true);
$backendOptions = array(’cache_dir’ => $config->cache->dir);
$cache = Zend_Cache::factory(’Core’, ‘File’, $frontendOptions, $backendOptions);



7. Thiết lập đối tượng Zend view

CODE

//thiết lập Zend view
$view = new Zend_View(array(’encoding’=>’UTF-8′));
$view->addHelperPath(’My/View/Helper’, ‘My_View_Helper_’);
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
$viewRenderer->setView($view);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);



8. Khởi Tạo đối tượng Front Controller

CODE

//đăng ký các đối tượng $db ,$cache ,$config
Zend_Registry::set(’db’, $db);
Zend_Registry::set(’cache’, $cache);
Zend_Registry::set(’config’, $config);
// cài đặt controller
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
/*
//Nạp Controller cho 2 modules admin và default
$frontController->addControllerDirectory(’./application/modules/admin/controllers’, ‘admin’);
$frontController->addControllerDirectory(’./application/modules/default/controllers’, ‘default’);
*/


9. Đăng ký plugin để cài đặt layout cho modules admin và default và đăng ký plugin phân quyền truy cập

CODE

//đăng ký plugin để cài đặt layout các modules
$frontController->registerPlugin(new My_Plugin_Adminsetup());

//đăng ký My ACL plugin để điều khiển truy cập (phân quyền vùng truy cập)
$frontController->registerPlugin(new My_Plugin_ACL());



10. Dispatch front Controller để quản lý các request của người dùng

CODE

// run!
$router = $frontController->getRouter();
$frontController->addModuleDirectory(’application/modules’);
$frontController->setDefaultModule(’default’);
$frontController->dispatch();



Như vậy bạn đã bước đầu xây dựng thành công khung sườn cho ứng dụng của chúng ta.Bây giờ Chúng ta cần phân tích các sự kiện (Action) và nhóm các sự kiện (action) phù hợp này thành các controller tương ứng để xây dựng ứng dụng. Việc tạo các lớp controller này được đặt trong thư mục Controllers.yêu cầu là mổi action trong controller này đi kèm với một file định dạng.phtml thực hiện chức năng hiển thị của view trong mô hình kiến trúc MVC: Views/Scripts/[controller name]/[Action name].phtml.

2.3.2. Zend_Controller
2.3.2.1. Cơ sở lý thuyết

Zend_Controller được xem là thành phần Controller trong kiến trúc MVC của Zend framework. Controller này sẽ nhận xữ lý tất cả các truy vấn từ website.Tất cả yêu cầu này đều bị chặn bởi front controllervà chuyển chúng đến một Actions Controller riêng biệt dựa vào địa chỉ ( Url ) đã yêu cầu.Như đã được đề cập ở phần trên Zend Framework sử dụng đối tượng Front Controller để quản lý các Request được gởi đến Web server. Và dựa trên Request đó, nó sẽ gọi các lớp xử lý Model và trả về kết quả trình bày với các lớp View.

Đối tượng Front Controller sẽ lấy và xử lý các yêu cầu Request từ người dùng bằng một member function (gọi là Action) trong một class Controller tương ứng với yêu cầu Request từ người dùng (được đặt trong thư mục Application/ControllershoặcApplication/Module/[ModuleName]/Controllers)
Ví dụ : file IndexController và các member function (action) như sau :

CODE

< ?php
Class IndexController()
{
function indexAction(){

}
function addAction(){

}
function editAction(){

}
function deleteAction(){

}
}


Lớp IndexController với các Action là member function: addAction(), editAction(), deleteAction(),indexAction().

Zend Frameworks tổ chức mỗi page trong một ứng dụng website là một action. Và các action được nhóm lại thành một trong controller

Ví dụ : với URL : http://localhost/eshop/cart/transport thì Cart là Controller và transport là Action.
Qui cách đặt tên :

- Class Controller : đặt tên {Tên controller}Controller. Tên controller phải bắt đầu bằng chữ cái IN HOA và các chữ sau viết thường. Ví dụ : IndexController , NewsController,…
- Các hàm action trong Class : đặt tên {action name}Action. Tên action phải viết thường toàn bộ. Ví dụ : addAction(),editAction().

Qui định, Zend Framework sẽ xem:

- index là action mặc định. Do đó, khi gọi URL dạng : http://localhost/eshop/cart/thì action index sẽ được gọi.
- Tương tự với Controller, IndexController được xem là Controller mặc định.
- Với URL http://localhost/eshop thì action index của IndexControllersẽ được gọi .

2.3.2.2. Sử dụng Zend_Controller trong website bán hàng mỹ nghệ

Zend_controller là cốt lổi của Zend framework.Cho nên sử dụng Zend_Controller trong ứng dụng này là điều tất yếu.Để sử dụng Zend Controller bạn phải cài đặt Zend Controller trong file bootstrap như đã trình bày ở trên.
Căn cứ vào các chức năng và yêu cầu của ứng dụng,website bán hàng mỹ nghệ đã tạo các Controller như sau:

Trong module Admin:

  - IndexController
  - FaqController
  - HoadonController
  - SanPhamController,
  - ThitruongController,
  - UserController
  - LoaihangController
  - NhomhangController
  - khachhangController,
  - TintucController .

Trong module default :

  - FaqController
  - UserController
  - IndexController
  - CartController
  - NewsController
  - MarketController

XétUserController, đây là controller xử lý các sự kiện của user như đăng ký,đăng nhập,thoát,hiển thị và cập nhật thông tin user. Mỗi sự kiện này được tổ chức thành một action trong UserController. Vì vậy lớp UserController có các action chính : loginAction,logoutAction,registerAction,displayprofileAction,updateAction.

CODE

class UserController extends Zend_Controller_Action
{
function loginAction(){
//code xữ lý sự kiện đăng nhập
}
function logoutAction(){
//code xữ lý sự kiện logout
}
function registerAction(){
//code xữ lý sự kiện đăng ký
}
function updateAction(){
//code xữ lý sự kiện cập nhật
}
function displayprofileAction(){
//code xữ lý sự kiện hiển thị thông tin user
}
function __call($action, $arguments)
{
// trường hợp request đến action này không tồn tại
}
}



Khi người dùng muốn đăng ký khách hàng thì ta chỉ việc link đến action register của UserController này bằng địa chỉ : http://localhost/myweb/user/register
Khi đó hàm registerAction được gọi và kết quả xứ lý trả về cho View (views/script/user/register.phtml) hiển thị lên trình duyệt ..

2.3.1. Zend_Config

Zend_Config được thiết kế để làm đơn giản hóa quá trình truy cập, sử dụng và cấu hình dữ liệu trong ứng dụng.Nó cung cấp một đối tượng cơ sở để truy cập vàocấu hình dữ liệu.Hiện thời thì Zend_Config cung cấp adapters cho cấu hình dữ liệu được lưu trữ trong file Inivà XML bằng Zend_Config_Ini và Zend_Confg_XML tương ứng .Ta có thể sử dụng Zend_Config_Ini hoặc Zend_Config_XML để lấy cấu hình dữ liệu nhưng nếu trong trường hợp cấu hình dữ liệu đã được lưu trữ trong mãng thì một cách đơn giản khác là ta sử dụng Zend_Config gọi Constructor của nó như đoạn mã sau:

CODE

$configArray = array(
‘webhost’ => ‘www.example.com’,
‘database’ => array(
‘adapter’ => ‘pdo_MySQL’,
‘params’ => array(
‘host’ => ‘db.example.com’,
‘username’ => ‘dbuser’,
‘password’ => ’secret’,
‘dbname’ => ‘mydatabase’
)
)
);
$config = new Zend_Config($configArray);



2.3.1.1.1. Zend_Config_IniTa có thể khai báo cấu hình dữ liệu trong file theo định dạng Ini như khai báo sau :
; Cấu hình site eshop

CODE

[eshop]
webhost = www.eshop.com
database.adapter = pdo_MySQL
database.params.host = db.eshop.com
database.params.username = dbuser
database.params.password = secret
database.params.dbname = dbname

;news kế thừa từ site eshop và
; overide lại những giá trị cần thiết
[news : production]
database.params.host = dev.eshop.com
database.params.username = devuser
database.params.password = devsecret



Sau đó dùng Zend_Config_Ini để nạp file cấu hình này vào biến

$config như đoạn mã sau :

< ?php
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config_Ini('/path/to/config.ini', 'news');
/*
echo $config->database->params->host; // prints “dev.eshop.com”
echo $config->database->params->dbname; // prints “dbname”
*/

2.3.1.1.2. Zend_Config_XML

Ngoài ra ta có thể khai báo cấu hình dữ liệu trong file theo định dạng XML như khai báo sau :

Tương tự khi sử dụng Zend_Config_Ini,ta sử dụng câu lệnh sau đê nạp cấu hình trên vào biến $config.

CODE

< ?php
require_once 'Zend/Config/XML.php';

$config = new Zend_Config_XML('/path/to/config.XML', 'news');

echo $config->database->params->host; // prints “dev.eshop.com”
echo $config->database->params->dbname; // prints “dbname”



2.3.1.2. Sử dụng thành phần Zend_Config trong website bán hàng mỹ nghệ

Website bán hàng mỹ nghệ sử dụng hệ quản trị cơ sở dữ liệu MySQL. Đặt tên database là eshop.
Tạo file cấu hình bằng định dạng Ini có có tên config.ini đặt vào thư mục Application vơi nội dung như sau:

CODE

[general]
;cache configuratrions
cache.dir = ./application/cache
cache.maxLifetime = 7200
;database configurations
database.type = pdo_MySQL
database.host = localhost
database.username = root
database.password =
database.name = eshop



Sau đó tạo kết nối đến cơ sở dữ liệu trong file bootstrap: index.php

CODE

//gán file cấu hình database (config.ini) vào biến config
$config = new Zend_Config_Ini(’./application/config.ini’, ‘general’);
//db tạo mảng cấu hình kết nối cơ sở dữ liệu
$params = array(
‘host’ => $config->database->host,
‘username’ => $config->database->username,
‘password’ => $config->database->password,
‘dbname’ => $config->database->name
);
//tạo đối tượng $db kết nối đến cơ sở dữ liệu .
$db = Zend_Db::factory($config->database->type, $params);
// để hiển thị kết quả truy vấn tiếng việt
$db->query(”SET NAMES ‘utf8′”);

// tạo adapter mặc định bằng Zend_Db_Table
//Zend_Db_Table_Abstract::setDefaultAdapter($db);
Zend_Db_Table::setDefaultAdapter($db);

//đăng ký đối tượng $db
Zend_Registry::set(’db’, $db);


Đến lúc này bạn đã hoàn toàn kết nối thành công đến cơ sở dữ liệu của chúng ta.Và việc đăng ký thành công đối tượng $db sẽ giúp chúng ta dễ dàng sử dụng đối tượng $db mổi lúc cần đến bằng dòng lênh:$db=Zend_Registry::get(’db’);
Điều dễ dàng nhận ra là nó rất thuận lợi cho chúng ta mổi khi thao tác trên database,và không cần phải viết lại cả đoạn code trên khi cần thao tác trên cơ sở dữ liệu.

Tìm hiểu Zend framework nên bắt đầu từ đâu ? (phần 4)

Đến đây bạn vẫn chưa hiểu về qui trình hoạt động của Zend thì hãy xem Ví dụ mẫu của mình cho quá trình hoạt động của Zend framework ,cụ thể như sau :

Bổ sung nhé :

Đến đây bạn vẫn chưa hiểu về qui trình hoạt động của Zend thì hãy xem Ví dụ mẫu của mình cho quá trình hoạt động của Zend framework ,cụ thể như sau :

Qui trình hoạt động của Zf ,

Bây giờ ta tiếp tục tìm hiểu thành phần tiếp theo nhé



2.3.3. Zend_View
2.3.3.1. Cơ sở lý thuyết

Zend_View là lớp làm việc cho phần View trong mô hình cấu trúc MVC.Tức là nó tồn tại để giữ View script tách khỏi Model và Controller scripts. Nó còn cung cấp một hệ thống helpers, filters, và variable escaping.

Zend_View cho phép chúng ta chia cắt chương trình và giao nhiệm vụ hiển thị giao diện theo mổi phương thức Actionđó,nghĩa là mổi Action này sẽ đi với một trang hiển thị ra trình duyệt

ViewRenderer (Zend_Controller_Action_Helper_ViewRenderer) lo việc nạp các thuộc tính view ($this->view) và đảm trách cả phần giao trả giá trị choviewscript.Để công việc giao trả được chính xác, lớp này tạo dựng 1 đối tuợng Zend_View dùng để tìm kiếm và giao trả cho tập tin view trong thư mục views/scripts/{controller name}.

Tên tệp tin sau khi đựợc giao trả sẽ có đuôi là .phtml (views/scripts/{controller name}/{action_name}.phtml ).
Mặc định thì ViewRenderer được enable,bạn có thể disable nó bằng cách thêm vào dòng lệnh sau trước khi dispatch font controller trong file bootstrap:

CODE

//Disable ViewRenderer helper
$front->setParam(‘noViewRenderer’,true);



Về bản chất ,Quá trình này Có 2 bước chính :

• Script Controller của bạn sẽ tạo một thể hiện của Zend_view và gán các biến mà nó thể hiện .
• Controller sẽ yêu cầu Zend_View giao trả một View riêng để sinh mã đưa ra ngoài ,bằng cách giao quyền điều khiển cho view sript .
Trang được giao trả này bao gồm tất cả các thứ như HTTP, headers, phần body cũng như mọi exceptions có liên quan đến cách dùng qua hệ thống MVC.Front Controller có nhiệm vụ tự động gởi các thông tin của header, kế đến nội dung (body content) và cuối cùng kích họat để chạy chương trình (dispath).

2.3.3.2. Sử dụng Zend_View trong website bán hàng mỹ nghệ

Như trình bày ở trên ,việc sử dụng Zend_view trong ứng dụng web rất đơn giản nếu ta chỉ việc tạo các file view script tương ứng với từng action trong controller.
ví dụ cho việc sử dụng biến cho bạn khởi tạo một biến $temp trong Controller và bạn muốn giao biến này cho Zend_View thì chỉ cần sữ dụng dòng lệnh : $this->view->temp =$temp, lúc này giá trị của biến temp đã được sao chép cho View thông qua một biến cùng tên (có thể đặt tên bất kỳ ).

Điều đáng lưu ý ở đây là các lớp helpers được đặt trong thư mục views/helpers mà chúng ta tạo ra để có thể sử dụng trong tất cả các trang web .Trong ứng dụng này chúng ta xây dựng 3 lớp Zend_View_Helper_BaseUrl ,Zend_View_Helper_LinkTo và Zend_View_Helper_LoggedInUser.Các lớp này được nạp và gán cho Zend_View một cách tự động. Bạn chỉ cần gọi chúng ra để sử dụng bất cứ lúc nào đơn giản chỉ bằng một dòng lệnh :

CODE

- $this->Linkto($path) ;
- $this->BaseUrl() ;
- $this->LoggedInUser() ;



Ví dụ :
Views/helpers/baseUrl.php

CODE


class Zend_View_Helper_BaseUrl
{
function baseUrl()
{
$fc=Zend_Controller_Front::getInstance();
return $fc->getBaseUrl();
}
}

?>

Bán tài liệu zend framework (500k)

Yahoo: buctuonglua_12a8 - 0933.381.903