11/08/2018, 22:20

Sơ lược Phalcon Framework

I. Giới thiệu Phalcon là một php framework mã nguồn mở, được viết bằng C-extension, được tối ưu hóa về perfommance. Nó có tính độc lập, cho phép bạn sử dụng các thành phần của chúng một cách tùy biến theo ứng dụng mà bạn cần. Phalcon không chỉ riêng ở performance mà nó còn mạnh mẽ, giàu các ...

I. Giới thiệu

  • Phalcon là một php framework mã nguồn mở, được viết bằng C-extension, được tối ưu hóa về perfommance. Nó có tính độc lập, cho phép bạn sử dụng các thành phần của chúng một cách tùy biến theo ứng dụng mà bạn cần.
  • Phalcon không chỉ riêng ở performance mà nó còn mạnh mẽ, giàu các tính năng và dễ dàng sử dụng.
1. PHP C-extension làm việc như thế nào?
  • C-extension được load cùng với php tại cùng một thời điểm bắt đầu tiến trình nền của web server.
  • Các class và các hàm được cung cấp sẵn sàng sử dụng cho ứng dụng của bạn.
  • Code không được thông dịch bởi vì nó đã được biên dịch từ một flatform và processor.
2. Phalcon làm việc như thế nào?
  • Các thành phần của phalcon là độc lập (loosely couple). Với Phalcon không gì có thể áp đặt cho bạn, bạn có thể sử dụng nó một cách tùy biến toàn bộ Framwork hoặc chỉ một vài thành phần của nó.
  • Tối ưu hóa ở cấp Low-level
  • Tương tác với nhiều database với performance lớn nhất bằng cách sử dụng C ORM cho php (c-languge ORM for PHP).
  • Phalcon truy cập trực tiếp tới các thành phần cấu trúc bên trong của PHP => tối ưu hóa việc thực thi.
3. Kết luận
  • Phalcon được xây dựng trở thành một framwork nhanh nhất cho PHP

    phalcon-performance

II. Thành phần cấu trúc

1. Cấu trúc
  • Phalcon không áp đặt bạn phải tuân theo một cấu trúc cụ thể, trên thực tế các thành phần của nó là độc lập, bạn có thể thực thi Phalcon với cấu trúc mà bạn cảm thấy sử dụng thoải mái nhất.
  • ví dụ ta có thể có một cấu trúc như thế này:
tutorial/
app/
controllers/
models/
views/
public/
css/
img/
js/

Chú ý: Bạn không cần bất cứ một thư mục library nào liên quan đến Phalcon bởi nó đã được được vào bộ nhớ.

2. Beautiful URLs

Friendly URLs tốt cho việc SEO và nó cũng dễ dàng nhớ cho người sử dụng. Phalcon hỗ trợ viết lại các module mà được cung cấp bởi hầu hết các web server thông thường. Tất nhiên bạn có thể tạo ra ứng dụng mà không cần tới Friendly URLs

3. Bootstrap
  • File đầu tiên mà bạn cần tạo đó là bootstrap file, file này rất quan trọng nó như là cơ sở ứng dụng của bạn, cho phép bạn điều khiển các khía cạnh của nó. Ở trong file này bạn có thể thực thi việc khởi tạo các thành phần cũng như các hành vi của ứng dụng.

tutorial/public/index.php

registerDirs(array(
'../app/controllers/',
'../app/models/'
))->register();

Create a DI

$di = new PhalconDIFactoryDefault();

Setup the view component

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

Setup a base URI so that all generated URIs include the "tutorial" folder

$di->set('url', function(){
$url = new PhalconMvcUrl();
$url->setBaseUri('/tutorial/');
return $url;
});

Handle the request

$application = new PhalconMvcApplication($di);
echo $application->handle()->getContent();
} catch(PhalconException $e) {
echo "PhalconException: ", $e->getMessage();
}
a. Autoload
  • Nó được sử dụng để load các class như controller và model trong ứng dụng. Ví dụ chúng ta có thể đăng ký một hoặc nhiều thư mục controller tăng sự linh hoạt cho ứng dụng.
registerDirs(
array(
'../app/controllers/',
'../app/models/'
)
)->register();
b. Dependency Management

Một khái niệm quan trọng bạn cần phải hiểu khi làm việc với Phalcon đó là “dependency injection container”. Một service container như một cái túi mà ở đó chúng ta lưu toàn bộ các dịch vụ mà ứng dụng cần. Mỗi lần Framwork yêu cầu 1 thành phần, nó sẽ hỏi container bằng một thỏa thuận tên dịch vụ. Phancol là Framwork có tính độc lập, tách biệt, PhalconDI kết dính các thành phần lại với nhau.

<?php
//Create a DI
$di = new PhalconDIFactoryDefault();

PhalconDIFactoryDefault là một biến thể của PhalconDI. Nó đăng ký hầu hết các thành phần cùng với Phalcon. Do đó, chúng ta không nên đăng ký chúng từng cái một.

c. Đăng ký view

Tiếp đến đăng ký view để chỉ cho framwork tìm view file ở đâu. View không phù hợp với class, chúng không thể được đưa vào autoloader. Chúng ta có thể đăng ký bằng nhiều cách khác nhau ví dụ như sau bằng cách sử dụng một anonymous function:

$di->set('view', function(){
$view = new PhalconMvcView();
$view->setViewsDir('../app/views/');
return $view;
});
d. Đăng ký base URI

set('url', function(){ $url = new PhalconMvcUrl(); $url->setBaseUri('/tutorial/'); return $url; });

e. Handle request

Mục đích là để khởi tạo môi trường request, định tuyến request đến, và chuyến đến cá action.

$application = new PhalconMvcApplication($di);
echo $application->handle()->getContent();`
f. Set up connection
$di->set('db', function(){
return new PhalconDbAdapterPdoMysql(array(
"host" => "localhost",
"username" => "root",
"password" => "secret",
"dbname" => "test_db"
));
});

Nguồn tham khảo: http://docs.phalconphp.com/en/latest/index.html

0