PHP Framework phổ biến trong tương lai

Hiện nay trên thế giới đã có rất nhiều PHP Framework, từ các Frameworks  đầy đủ các thành phần (full- stack frameworks) bao gồm ORMs, thành phần kiểm tra (validation components), các HTML helper (sinh động mã HTML), đến  các Framwork nhỏ chỉ dùng để viết các service. Tất cả các Framework đều được giới thiệu như là dễ sử dụng, tốc độ cao, hoặc được tài liệu hóa tốt. Một trong số đó là Phalcon. Nhưng khác với các Framework hiện tại, Phalcon là một PHP module được viết bằng ngôn ngữ lập trình C

Bài viết sẽ trình bày một cái nhìn tổng quan về Phalcon và tìm hiểu điều gì khiến Phalcon trở nên đặc biệt có nhiều tiềm năng để trở thành PHP Framework phổ biến trong tương lai.

Giới thiệu về Phalcon ?

Phalcon là một framework đầy đủ các thành phần. Nó hỗ trợ kiến trúc MVC, cung cấp đầy đủ các tính năng tiện ích như ORM, các template engine cho hiển thị, caching dữ liệu, phân trang và một loạt các tính năng khác (tham khảo thêm các tính năng của Phalcon tại webstite http://phalconphp.com/).
Nhưng sự đặc biệt của Phalcon nằm ở chỗ: thay vì phải download cả một gói thư viện gồm nhiều file PHP như các framework khác, thì với Phalcon bạn chỉ cần cài đặt chúng như một PHP module. Nhờ vậy mà quá trình cài đặt diễn ra rất nhanh chóng (bạn có thể đọc hướng dẫn cài đặt tại link). Bên cạnh đó thì Phalcon là một Framework mã nguồn mở, nếu muốn, bạn có thể điều chỉnh và biên dịch lại mã nguồn.

Hiệu suất cao hơn

Một nhược điểm lớn của PHP là mỗi khi có một request được gửi đến server, tất cả các file đều được đọc từ ổ đĩa cứng, thông dịch bởi một module xử lý PHP trên server và trả kết quả về cho người dùng. Đó là nguyên nhân khiến cho hiệu năng PHP không được như các ngôn ngữ khác như Ruby (trên Rails) hay Python (trên Django, Flask). Nhưng với Phalcon, do được viết dưới dạng PHP module nên toàn bộ Framework đều được nạp sẵn vào trong RAM khi hệ thống khởi động, loại bỏ hoàn toàn quá trình đọc Framework từ ổ đĩa cứng mỗi khi có request tới. Kết quả benchmark trên websites đã chỉ ra sự vượt trội về hiệu năng Phalcon so với các PHP Framework khác

Phalcon - PHP Framework có hiệu năng tốt nhất
Hình 1. Kết quả Benchamrk giữa các PHP Framework

Số lượng request trong 1s mà Phalcon chịu tải được là cao nhất – gấp đôi Codelgniter. Ngoài ra, khi nhìn thời gian hoàn thành một request, Phalcon cũng tốn thời gian thấp nhất (bằng ½ thời gian thực thi của Codelgniter). Có thể nói Phalcon là PHP Framework có tốc độ xử lý nhanh nhất hiện nay.

Lập trình dễ dàng hơn

Phalcon cung cấp đầy đủ các tính năng phổ biến của một PHP MVC- Framework hiện đại (bộ định tuyến các URL, controller, các view template, ORM, Caching…) do đó Phalcon có đầy đủ các chức năng như các PHP Framework khác, nhưng lại có tốc độ xử lý nhanh hơn.

Thử nhìn vào cấu trúc của một dự án sử dụng Phalcon. 

app/
   controllers/
   models/
   views/
public/
   css/
   img/
   js/

Luôn luôn có một file bootstrap được gọi mỗi khi có request được gửi đến server nằm trong file public/index.php (sử dụng file .htaccess để điều hướng mọi request đến file bootstrap).

try {
    // register an autoloader
    $loader = new PhalconLoader();
    $loader->registerDirs(array(
        '../app/controllers/',
        '../app/models/'
    ))->register();

    // create a dependency injection container
    $di = new PhalconDIFactoryDefault();

    //set up the view component
    $di->set('view', function(){
        $view = new PhalconMvcView();
        $view->setViewsDir('../app/views/');
        return $view;
    });

    // handle the request
    $application = new PhalconMvcApplication();
    $application->setDI($di);
    echo $application->handle()->getContent();
}
catch (PhalconException $e) {
     echo "PhalconException: ", $e->getMessage();
}

Model-Controller

Các controller và model đã được nạp động vào ứng dụng thông qua file bootstrap, vậy nên bạn có thể sử dụng chúng từ bất kì thư mục hoặc file nào trong dự án. Các lớp controller kế thừa từ lớpPhalconMvcController còn model kế thừa từ PhalconMvcModel.

  • Controller có thể được định nghĩa như sau:
class IndexController extends PhalconMvcController 
{
    public function indexAction() {
        echo 'welcome to index';
    }
}
  • Cách tạo một model cũng rất đơn giản:
class Users extends PhalconMvcModel 
{
   public function initialize() {
       $this->hasMany('id', 'comments', 'comments_id');
   }
}

Bằng việc kế  thừa từ lớp PhalconMvcModel bạn có thể sử dụng những phương thức như Find () để tìm kiếm, Save() để lưu dữ liệu, và Validate() để kiểm tra dữ liệu của model.

View

View cung cấp các chức năng cơ bản cho việc hiển thị dữ liệu lấy từ controller cũng như tạo các layout. View trong Phalcon sử dụng PHP thuần, không sử dụng các cú pháp đặc biệt như Twig hay Blade. Tuy nhiên, nếu bạn đã quen với Twig, Smarty thì Phalcon cũng hỗ trợ những template engine này.

<html>
 <head>
     <title>Blog's title</title>
 </head>
 <body>
     <?php echo $this->getContent(); ?>
 </body>
</html>

Phalcon Query Language

Phalcon cài đặt riêng một hệ thống ORM – Phalcon Query Language (PHQL), có thể dùng để tương tác với cơ sở dữ liệu một cách đơn giản . PHQL có thể được tích hợp với các model để dễ dàng định nghĩa và sử dụng các quan hệ giữa các bảng dữ liệu.

  • Bạn có thể sử dụng PHQL bằng việc tạo một thể hiện của lớp PhalconMvcModelQuery:
$query = new PhalconMvcModelQuery("SELECT * FROM Users", $di);

$users = $query->execute();
  • Hoặc sử dụng hàm tiện ích sau:
$users = $this->modelsManager->createBuilder()->from('Users')
                                              ->orderBy('username')
                                              ->getQuery()
                                              ->execute();

Điều này giúp các truy vấn phức tạp trở nên đơn giản hơn.

Kết luận – PHP Framework phổ biến trong tương lai

Phalcon cung cấp các tính năng quan trọng của một PHP MVC-Framework hiện đại, Nó là một Framewrok dễ dùng. Bên cạnh đó, Phalcon có nhiều ưu điểm về mặt hiệu năng so với các PHP Framework khác. Trong tương lai, Phalcon có nhiều tiềm năng để trở thành một PHP Framework phổ biến trong tương lai.