Thứ Tư, 1 tháng 10, 2014

Bài 1: Zend1 - Hướng dẫn cài đặt và chạy ứng dụng đầu tiên

Bài 1: Zend1 - Hướng dẫn cài đặt và chạy ứng dụng đầu tiên


---o0o---


Link bài viết gốc

Xây dựng mô hình các thư mục sau


        www/zfexam/application

        www/zfexam/public/

        www/zfexam/library
        

Trong thư mục public tạo 2 file .htaccess và index.php

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


        <?php
        defined('APPLICATION_PATH')|| defined('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
        defined('APPLICATION_ENV') || defined('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();
        

Cùng phân tích các câu lệnh trong file index.php

Dòng đầu tiên


        defined('APPLICATION_PATH')|| defined('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
        

Chạy câu lệnh:

echo APPLICATION_PATH;

Kết quả thu được là: D:\Ampps\www\zfexam\application, đây chính là vị trí của thư mục application


Câu lệnh:

echo (__FILE__);

Ta thu được đường dẫn: D:\Ampps\www\zfexam\public\index.php. Đây chính là đường dẫn của file đang chạy

Thêm dirname vào:

echo dirname(__FILE__);

Kết quả lại là: D:\Ampps\www\zfexam\public. Tức là trả về thư mục chứa file đang chạy

Tiếp tục thêm realpath vào:

echo realpath(dirname(__FILE__));

Kết quả thu được vẫn là: D:\Ampps\www\zfexam\public. Nhưng nếu thêm đầy đủ như ở dòng 1 thì kết quả lại là: D:\Ampps\www\zfexam\application

Vì 2 thư mục public và application là ngang hàng nhau nên để từ thư mục public (thư mục chứa file index.php đang chạy) chuyển sang thư mục application ta cần phải chạy câu lệnh trên


Xét tiếp dòng thứ 2


        defined('APPLICATION_ENV') || defined('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
        

Hàm getenv() dùng để set giá trị cho biến môi trường. Trả về giá trị TRUE hoặc FALSE. Ở đây hàm trả về FALSE nên hằng APPLICATION_ENV có giá trị là production. Hằng này lưu thông tin của production ở file application.ini

Xét tiếp dòng thứ 3


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

Hàm get_include_path() trả về giá trị mới của include_path: D:\Ampps\www\zfexam/library;.;C:\php\pear.

Hàm set_include_path() trả lại giá trị của include_path

Hằng PATH_SEPARATOR đã được định nghĩa là dấu :

Dòng này làm nhiệm vụ load nội dung của library, nơi 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, 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.

Dòng tiếp theo là nạp nội dung trang Application.php

Tiếp đó gọi trang application.ini ở thư mục config


        $application = new Zend_Application(
            APPLICATION_ENV,
            APPLICATION_PATH . '/configs/application.ini'
        );
        

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

2. application.ini


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

Dòng đầu tiên khởi tạo phân đoạn có giá trị [production]

Dòng 2 và 3 cho phép bật tính năng báo lỗi của Zend

Dòng 4, 5 cho phép tìm tới file Bootstrap.php để thông qua nó tương tác các thư viện hàm trong Zend. Đồng thời chỉ định tên gọi của class là Bootstrap.

Dòng cuối cùng chỉ ra đường dẫn tới thư mục controller trong apptication

Không có nhận xét nào:

Đăng nhận xét