> > > Zend Framework 2: Tìm hiểu quy trình hoạt động

Zend Framework 2: Tìm hiểu quy trình hoạt động

Ở bài trước, chúng ta đã cùng tìm hiểu và xây dựng ứng dụng đầu tiên bằng zend framework. Qua bài đó, chúng ta nhận thấy zend framework thật khó khăn trong việc sử dụng phải không nào
Âm đạo giả Magical Kiss
 
Máy massage điểm G Prince
 

Bán tài liệu zend tiếng việt: 500.000 vnđ (500 k)

Hotline: 0933.381.903
Yahoo: Mua bán online
Email: songthan.hctm@gmail.com

Qua bài đó, chúng ta nhận thấy zend framework thật khó khăn trong việc sử dụng phải không nào. Từ bước cơ bản nhất là cấu hình cho tới bước khởi động, nó luôn làm cho bạn phải thao thức.

Và hàng loạt các câu hỏi tại sao được đặt ra trong bạn. Tôi cũng vậy, khi mới nghiên cứu về zend framework. Tôi cũng đã rơi vào tình huống như vậy. Và giải pháp của tôi là chỉ có thể tìm hiểu sự trợ giúp của google. Và tự mình định nghĩa lại vấn đề theo cách mà tôi có thể hiểu.

Tiếp tục bài này, tôi sẽ nói đến hướng hoạt động và giúp các bạn phân tích cũng như tìm hiểu về quy trình xử lý trong zend framework. Để qua đó có thể mở rộng và tùy chọn trong ứng dụng của mình.

A- Zend Framework hoạt động ra sao:

Giống với bất kể một php framework nào, zend framework vận hành theo mô hình M-V-C. Vì thế bạn sẽ công cảm thấy ngạc nhiên khi tiếp xúc với quy trình này.

Ví dụ xét liên kết:

http://qhonline.info/book/viewbook/

Như vậy book được xem là một controller và viewbook được xem là một action của controller đó. Khi hoạt động, trong controller bạn sẽ khởi tạo những action như mong muốn thông qua việc thiết lập phương thức một cách cụ thể.

Ví dụ:

PHP Code:
class IndexController extends Zend_Controller_Action
    public function 
indexAction(){ 
    } 
}

Như vậy IndexController cho ta Controller mang tên index và indexAction cho ta action là index.

Khi đó bạn bắt buộc phải khởi tạo trong views một thư mục ứng với controller là index trong scripts. Và file index.phml ứng với action là index.

Xét ví dụ khác:

PHP Code:
class BookController extends Zend_Controller_Action{
 public function 
indexAction(){
 }
 public function 
viewbookAction(){
 } 
}

Ở ví dụ này cho ta biết Controller là Book, 2 action là index và viewbook.

Như vậy, để chạy được ứng dụng. Bạn cần tạo thư mục Book trong views ứng với controller và file index.phtml, viewbook.phtml.

Cụ thể:

Mã:
application/controller/BookController.php
 
application/views/scripts/Book/index.phtml
 
application/views/scripts/Book/viewbook.phtml

B- Tìm hiểu nội dung file index.php và application.ini trong Zend Framework:

Nội dung đầy đủ file index.php

PHP Code:
defined('APPLICATION_PATH'
    || 
define('APPLICATION_PATH'
              
realpath(dirname(__FILE__) . '/../application')); 
defined('APPLICATION_ENV'
    || 
define('APPLICATION_ENV'
              (
getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV'
                                         : 
'production')); 
set_include_path(implode(PATH_SEPARATOR, array( 
    
dirname(dirname(__FILE__)) . '/library'
    
get_include_path(), 
))); 
require_once 
'Zend/Application.php' ;
$application = new Zend_Application
    
APPLICATION_ENV
    
APPLICATION_PATH '/configs/application.ini' 
); 
$application->bootstrap()->run();

Tiếp theo chúng ta sẽ tìm hiểu xem bên trong file index.php này có những điểm gì cần lưu ý.
 

PHP Code:
defined('APPLICATION_PATH'
    || 
define('APPLICATION_PATH'
              
realpath(dirname(__FILE__) . '/../application')); 

Dòng này khai báo cho Zend Framework biết bạn đang đặt thư mục application ở đâu thông qua một hằng APPLICATION_PATH. Đây là hằng mà bạn sẽ dùng rất nhiều trong các khai báo cấu hình sau này.
 

PHP Code:
defined('APPLICATION_ENV'
    || 
define('APPLICATION_ENV'
              (
getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV'
                                         : 
'production')); 

Dòng này cho phép đọc thông tin phân đoạn có tên production ở file application.ini ở bên dưới. Và ta đưa chữ production vào một hằng là APPLICATION_ENV.
 

PHP Code:
set_include_path(implode(PATH_SEPARATOR, array( 
    
dirname(dirname(__FILE__)) . '/library'
    
get_include_path(), 
))); 

Dòng này làm nhiệm vụ load nội dung của thư viện library nơi mà bạn chứa thư viện của zend. Nôm na có thể hiểu là, nếu bạn sử dụng dòng này. Thì ở phần dưới và những trang khác, thay vì bạn phải gõ: require_once 'Library/Zend/Application.php' Thì giờ bạn chỉ cần gõ: require_once 'Zend/Application.php' . Vì mặc định thư viện đã được nạp vào rồi.
 

PHP Code:
require_once 'Zend/Application.php' ;
$application = new Zend_Application
    
APPLICATION_ENV
    
APPLICATION_PATH '/configs/application.ini' 
); 

Tiếp tới, chúng ta nạp nội dung trang Application.php và tiếp tục gọi trang application.ini ở thư mục config. Và nếu bạn chú ý, sẽ thấy chúng ta sử dụng 2 hằng vừa khởi tạo là APPLICATION_ENV và APPLICATION_PATH để lấy thông tin.
 

PHP Code:
$application->bootstrap()->run(); 

Và cuối cùng là việc thực thi lệnh bằng hàm run().

Khi chúng ta đã hiểu được vấn đề, thì chúng ta có thể viết chúng gọn lại theo cách mà ta hiểu.
 

PHP Code:
define('APPLICATION_PATH'
              
realpath(dirname(__FILE__) . '/../application')); 
define('APPLICATION_ENV','production'); 
set_include_path(dirname(dirname(__FILE__)) . '/library'); 
require_once 
'Zend/Application.php' ;
$application = new Zend_Application
    
APPLICATION_ENV
    
APPLICATION_PATH '/configs/application.ini' 
); 
$application->bootstrap()->run();

Tiếp tới ta tìm hiểu file application.ini để xem nó thể hiện thông tin gì:
 

Mã:
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

Dòng đầu tiên có chức năng khởi tạo phân đoạn mang giá trị [production]. Bởi vì trong file này chúng ta chia làm nhiều phân đoạn một cách rõ ràng. Ví dụ phân đoạn chứa cơ sở dữ liệu, phân đoạn chứa thông tin layout, kết nối CSDL,….
 

Mã:
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

Hai dòng này cho phép bạn có bật tính năng báo lỗi của ZEND FRAMEWORK hay không, nếu có bạn sẽ sửa giá trị thành 1.
 

Mã:
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

Hai dòng này cho phép bạn tìm tới file bootstrap.php để thông qua nó tương tác các thư viện hàm trong ZEND FRAMEWORK. Đồng thời chỉ định tên gọi của class là Bootstrap. Ở đây bạn cũng cần lưu ý là tên class trong file Bootstrap.php phải cùng tên với Bootstrap mà bạn đã khai báo ở application.ini.
 

Mã:
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

Dòng này chỉ ra đường dẫn tới thư mục controllers trong thư mục application của chúng ta.

Bán tài liệu zend tiếng việt: 500.000 vnđ (500 k)

Hotline: 0933.381.903
Yahoo: Mua bán online
Email: songthan.hctm@gmail.com