Bài 02: Xây dựng cấu trúc folder cho ứng dụng phalcon

DOWNLOAD

Nếu bạn đã từng tìm hiểu qua các Framework khác thì thông thường khi download source về nó sẽ có hệ thống danh sách các folders theo cấu trúc của nó, chúng ta sẽ tuân theo cấu trúc đó và sử dụng. Nhưng đối với Phalcon thì nó hơi khác, chúng ta có thể tự mình tạo ra cấu trúc folder của ứng dụng riêng cho mình và sau đó sẽ cấu hình cho Phalcon hiểu mô hình chúng ta đang sử dụng.

Bình thường thì bạn sẽ dùng lệnh để tạo danh sách folder luôn nhưng trong bài này chúng ta sẽ tự mình tạo từng folder để dễ nắm bắt hơn.

1. Cấu trúc thông thường của Phalcon

Thông thường cấu trúc của Phalcon khi mới cài đặt và tạo tự động sẽ như sau:

project_name/
    /app/
       /cache/
       /config/
       /controllers/
       /models/
       /views/
    /public/
       /bootstrap/
       /css/
       /js/

Các bạn thấy cấu trúc nó không khác gì các Framework hiện nay như Codeigniter, Laravel đó là tuân theo mô hình MVC. Bây giờ các bạn tạo một các file như trên rồi chúng ta sẽ tiếp tục thực hành nhé.

2. Cấu hình file bootstrap

File Bootstrap không phải là bộ Famework Twitter Bootstrap đâu nhé các bạn, đây là file mà ta có thể hiểu nó dùng để điều hướng, khởi tạo hệ thống của ứng dụng, tất cả các request sẽ được gọi tới file này và file này sẽ phân tích request, gọi đến controller phù hợp.

Bạn tạo file index.php với đường dẫn như sau:  project_name/index.php, sau đó copy nội dung sau vào:

try {

    // Đăng ký Loader
    $loader = new \Phalcon\Loader();
    $loader->registerDirs(array(
        'app/controllers/', // Khai báo Folder Controller
        'app/models/'  // Khai báo models
    ))->register();

    // Khởi tạo DI
    $di = new Phalcon\DI\FactoryDefault();

    // Khởi tạo và khai báo thư mục view
    $di->set('view', function(){
        $view = new \Phalcon\Mvc\View();
        $view->setViewsDir('app/views/');
        return $view;
    });
    
    // Câu hình url tới project, vì mình nằm trong project_name nên phải khai báo
    $di->set('url', function(){
        $url = new \Phalcon\Mvc\Url();
        $url->setBaseUri('/project_name/');
        return $url;
    });

    // Khởi tạo ứng dụng
    $application = new \Phalcon\Mvc\Application($di);

    // Xử lý và hiển thị kết quả
    echo $application->handle()->getContent();

} catch(\Phalcon\Exception $e) {
     echo "PhalconException: ", $e->getMessage();
}
Trong đó nội dung từng phần nhỏ mình đã comment rồi nên bạn đọc trong đó nhé. Lúc này cấu trúc folder của chúng ta như sau:

project_name/
    /app/
       /cache/
       /config/
       /controllers/
       /models/
       /views/
    /public/
       /bootstrap/
       /css/
       /js/
    /index.php

3. Xóa bỏ file index.php bằng htaccess

Bước này khá là quan trong nếu bạn quan tâm đến vấn đề SEO dự án của bạn, vì như mình trình bày tất cả các request đều vào file index.php nên trên URL bắt buộc chúng ta phải gõ thêm index.php. Nhưng điều này không hay lắm vì nhìn rất phản cảm, chính vì vậy chúng ta sử dụng .htaccess để điều trị căn bệnh này của nó.

Bạn tạo file .htaccess có đường dẫn là project_name/.htaccess với nội dung như sau:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
Tới đây coi như thành công 90% việc cấu hình rồi đấy, bây giờ chúng ta sẽ thực hiện viết chạy chương trình đầu tiên.

4. Ví dụ đầu tiên của Phalcon

Vì mỗi bài mình chỉ trình bày một vấn đề nên về mô hình MVC trong Phalcon mình sẽ trình bày ở bài kế tiếp, bài này mình chỉ lấy một đoạn ví dụ nhỏ để minh họa..

Bạn tạo file IndexController.php có URL là project_name/app/controllers/IndexController.php với nội dung như sau:

class IndexController extends \Phalcon\Mvc\Controller
{
    public function indexAction()
    {
        echo '<h1>Hello World!</h1>';
    }
}
Đây chính là file controller có tên là Index. Hậu tố Controller dùng để phân biệt giữa controller và các đối tượng khác. Các bạn thấy trong lớp IndexController có kế thừa một lớp   là Phalcon\Mvc\Controller, vậy lớp này đâu ra? Câu trả lời đó là file ext_phalcon.dll mà bạn đã import vào ở bài hướng dẫn cài đặt Phalcon trên window đấy. Lúc này cấu trúc Folder của chúng ta như sau:

project_name/
    /app/
       /cache/
       /config/
       /controllers/
            /IndexController.php/
       /models/
       /views/
    /public/
       /bootstrap/
       /css/
       /js/
    /index.php

Bây giờ bạn chạy lên và gõ vào đường dẫn URL  http://localhost/project_name/index/index thì màn hình sẽ xuất hiện chữ "Hello World!". Trong URL trên thì:

  • Index màu xanh là tên Controller (IndexController)
  • Index màu đỏ là tên phương thức index (indexAction)

Hoặc bạn gõ với URL là: http://localhost/project_name thì kết quả vẫn tương đương, lý do là chúng ta không truyền vào tham số controller và action nên nó sẽ tự đông gọi đến Controller index và Action index.

Lời kêt

Bài này chúng ta chỉ tìm hiểu mô hình cấu trúc folder trong ứng dụng Phalcon thôi chứ chưa đề cập đến mô hình MVC nhé, bài tiếp theo chúng ta sẽ tìm hiểu đến các thành phần này như các tạo controller, các tạo views, cách gọi views và tạo model trong phalcon một cách chi tiết nhất.

Hãy để lại link bài viết gốc khi chia sẻ bài viết này, mình sẽ report DMCA với những website lấy nội dung mà không để nguồn hoặc copy bài với số lượng lớn.

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Group Facebook để được hỗ trợ nhanh nhất.