PHP

Hướng dẫn toàn tập Phalcon cho người mới bắt đầu

Hướng dẫn phalcon

Trong bài hướng dẫn Phalcon này, chúng tôi sẽ giới thiệu framework này và cho bạn biết từng bước để tạo dự án đầu tiên của bạn. Tất cả các gói web hosting của chúng tôi đều đã có sẵn Phalcon làm mặc định, vì vậy bạn có thể thử dùng framework này ngay! Ở cuối bài hướng dẫn Phalcon, bạn sẽ làm được một form mẫu chứa các thông tin người dùng trong MySQL database.

Giới thiệu

Phalcon là một PHP framework hiệu năng cao dựa trên kiến trúc model-view-controller (MVC) architecture. Nó được ra mắt từ năm 2012 và từ đó luôn là mã nguồn mở. Mấu chốt của nó được viết dựa trên ngôn ngữ C và Zephir. Phalcon nổi tiếng vì là framework đầu tiên triên khai object-relational mapping (ORM) trong C.

Phalcon rất dễ tùy chỉnh nhờ vào Zephir, một ngôn ngữ lập trình cao cấp. Nhưng đừng sợ, vì Phalcon có thể được dùng để phát triển ứng dụng PHP, mà không cần bạn có kiến thức về ngôn ngữ lập trình C. Hãy bắt đầu bài hướng dẫn dẫn sử dụng Phalcon bằng cách so sánh nó với các PHP frameworks khác.

Phalcon – P for Performance

Mục đích đằng sau của việc phát triển Phalcon là tạo ra một extension cho web server có thể tăng thời gian thực thi, giảm việc sử dụng tài nguyên, và đảm bảo việc xử lý request tốt hơn so với các PHP frameworks khác. Ưu điểm lớn nhất của Phalcon là khả năng tận dụng bộ nhớ tạm hiệu quả. Việc này sẽ giúp cho thông tin không cần phải lưu trữ ở nơi khác như hầu hết các PHP frameworks khác cần sử dụng file read và file stats để lưu thông tin khiến cho việc vận hành hệ thống nặng nề hơn. Phalcon nhờ vậy đã tối ưu hiệu năng và cải thiện tính hiệu quả.

Hãy xem kết quả benchmark:

Phalcon Memory mỗi request benchmark

Vì Phalcon không cần core file, bộ nhớ của mỗi request cần dùng ít hơn nhiều so với các PHP frameworks khác.

Phalcon request benchmark mỗi giây

Chúng ta cũng có thể thấy Phal có thể sử lý 1400 request mỗi giây, trong khi đó những framework khác gặp nhiều khó khăn hơn.

phalcon benchmark file mỗi request

Ít file trên mỗi request có nghĩa là sẽ xử lý nhanh hơn và Phalcon làm được một điều rất ấn tượng ở bài test này.

phalcon benchmark thời gian hoàn tất 1000 requests

Phalcon framework có thể hoàn tất 1000 requests với tốc độ ánh sáng. Trong khi những framework khác cũng mất một lúc lâu sau mới xong với cùng số lượng request.

So sánh giữa Phalcon và Laravel

Mặc dù Laravel luôn được xem là lựa chọn hàng đầu cho PHP framework, nó không thể so sánh được với Phalcon về mặc tốc độ, khả năng mở rộng và hiệu năng. Tuy nhiên Laravel cũng rất đơn giản để học và dễ debugging lỗi. Mặc dù bạn cần có kiến thức về C để debug code trong phalcon. Một điểm khác biệt nữa là Laravel có thể cài trên bất kỳ server nào, Phalcon cần quyền root để cài lên server.

So sánh giữa Phalcon và CodeIgniter

Tại thời điểm ban đầu khi chưa có PHP framework nào, chúng ta chỉ có CodeIgniter. Mặc dù nó đã tồn tại rất lâu, việc phát triển đã chậm lại trong những năm gần đây. Cả Phalcon và CodeIgniter đều có những tính năng hay, như documentation, và có một cộng đồng người dùng lớn. Nhưng Phalcon thì nhanh hơn nhiều, còn CodeIgniter thì mạnh về việc tương thích nhiều phần cứng, ở mảng này thì CodeIgniter có thể canh trạnh được với Phalcon.

So sánh giữa Phalcon và Symfony

Cả Symfony và Phalcon đều là những dự án mã nguồn mở đa ngôn ngữ và hỗ trợ ORM. Chúng là extensions của kiến trúc MVC, và có CLIs riêng, với tư liệu hướng dẫn chi tiết. Nếu bạn đang muốn dựng REST APIs, cả 2 đều là lựa chọn hoàn hảo. Nhưng một lần nữa, khi nhắc đến hiệu năng, Phalcon vẫn giành chiến thắng. Trung bình, Phalcon có thể xử lý nhiều hơn 50 phần trăm so với Symfony. Tuy nhiên, ở việc debug, thì Phalcon hơi khó khăn, vì bạn cần biết code viết trên C. Debug trong symfony có thể dễ hơn nhiều.

Cài đặt Phalcon PHP Framework

Với Phalcon, tất cả những gì bạn cần làm là cài một PHP extension, chiếm dung lượng rất nhỏ. Tuy nhiên bạn cần root access để thực hiện. May mắn là nó đã được cài sẵn trên gói shared hosting của chúng tôi, vì vậy, việc thiết lập ban đầu sẽ không quá khó khăn. Chúng tôi cũng sẽ viết về cách cài Phalcon trên VPS chạy Ubuntu 16.04. Để mọi việc dễ dàng hơn, chúng tôi sẽ dùng Phalcon Developer cho cả 2 trường hợp.

Không chừng chừ nữa, hãy tiến hành ngay thôi!

Lựa chọn 1 – Thiết lập Phalcon trên Hostinger shared hosting

Đầu tiên, chúng tôi sẽ bắt đầu bằng cách cài Phalcon devtool bằng Composer, vốn cũng đã được cài sẵn từ trước trên gói hosting của chúng tôi. Để bắt đầu, kết nối tài khoản hosting của bạn tới SSH. Sử dụng command pwd để kiểm tra vị trí hiện tại của bạn. Chúng tôi khuyên nên tạo một thư mục trước public_html, để cho gọn gàng. Nếu lệnh sau đưa kết quả bên dưới, bạn đã ở đúng vị trí:

-bash-4.1$ pwd 
/home/YOUR_USERNAME

Bây giờ, hãy tạo file composer.json với nội dung sau:

{
"require-dev": {
"phalcon/devtools": "~3.2"
}
}

Bạn có thể làm vậy bằng File Manager hoặc bằng lệnh SSH:

nano composer.json

Nó sẽ tạo file và mở text editor để bạn dán nội dung trên vào. Sau đó bạn nhấn CTRL+X để lưu. Để cài đặt Phalcon developer tools, thực thi lệnh sau:

composer install

Đợi một lúc để quá trình hoàn tất, nó có thể mất ít phút. Sau đó hãy tạo một alias để dev tools hoàn toàn hoạt động bình thường. Nếu bạn theo đúng các bước trên, bạn có thể thực thi lệnh sau:

alias phalcon=/home/YOUR_USERNAME/vendor/phalcon/devtools/phalcon.php

Đừng quên thay YOUR_USERNAME thành đúng username của bạn.

Bây giờ, chúng ta đã có Phalcon developer tools. Để kiểm thử nó có hoạt động không, gõ lệnh:

phalcon

Bạn sẽ nhận được kết quả tương tự:

Phalcon DevTools (3.2.12)

Available commands:
info (alias of: i)
commands (alias of: list, enumerate)
controller (alias of: create-controller)
module (alias of: create-module)
model (alias of: create-model)
all-models (alias of: create-all-models)
project (alias of: create-project)
scaffold (alias of: create-scaffold)
migration (alias of: create-migration)
webtools (alias of: create-webtools)
serve (alias of: server)
console (alias of: shell, psysh)

Vì gói shared hosting đã có tất cả thành phần cần thiết cho Phalcon framework chạy, bạn không cần cài đặt bất kỳ extensions nào khác nữa. Phalcon framework có kiến trúc lỏng lẻo, nên bạn có thể tạo bất kỳ cấu trúc thư mục nào thuận tiện cho bạn. Để đơn ginả, chúng tôi sẽ dùng cấu trúc mà Phalcon developer tools cung cấp sẵn. Hãy chuyển tới thư mục public_html bằng lệnh sau:

cd public_html

Khi bạn đã đến đó, sử dụng Phalcon developer tool để cài đặt mọi thứ:

phalcon create-project example

Bây giờ, nếu bạn chuyển tới YourDomain.com/example trên trình duyệt, bạn sẽ thấy màn hình sau:

phalcon-framework-hostinger-shared-hosting

Lựa chọn 2 – Cài đặt Phalcon trên VPS

Bây giờ, hãy học cách cài đặt Phalcon PHP framework trên một máy chủ ảo VPS. Có thể mất nhiều thời gian hơn vì bạn cần cài nhiều thứ hơn. Nhưng chúng tôi sẽ chỉ hết cho bạn cho nên không khó lắm đầu. Ở phần này, chúng tôi sẽ dùng VPS chạy Ubuntu 16.04.

Đầu tiên, chúng tôi cần những thành phần sau được cài:

  • Apache
  • MySQL
  • PHP 5.5+
  • Composer

Apache, MySQL, và PHP đã được cài sẵn trên hầu hết các VPS templates. Vì vậy bạn chỉ cần cài Composer. Khi hoàn tât1, bạn có thể cài đặt Phalcon PHP extensions. Thực thi lệnh sau:

curl -s https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh | sudo bash

Bây giờ bạn đã có đủ mọi thứ cần thiết, hãy thiết lập Phalcon Framework. Chúng ta sẽ bắt đầu bằng cách lấy Phalcon developer tools, sẽ đơn giản hóa quá trình cài đặt. Chuyển tới thư mục gốc của domain. Nó có thể là:

cd /var/www

Sử dụng lệnh sau để tạo file composer.json:

nano composer.json

Nó sẽ tạo file này và mở text editor ra. Hãy dán nội dung sau vào:

{

"require-dev": {

"phalcon/devtools": "~3.2"

}

}

Nhấn CTRL+X để lưu. Tiếp tục cài đặt bằng lệnh sau:

composer install

Khi hoàn tất, hãy tạo alias để đảm bảo Phalcon Developer tools hoạt động. Trong ví dụ này, cấu trúc của nó sẽ là:

alias phalcon=/var/www/vendor/phalcon/devtools/phalcon.php

Hãy xem phalcon có hoạt động không bằng lệnh:

phalcon

Kết quả:

Phalcon DevTools (3.2.12)

Available commands:
info (alias of: i)
commands (alias of: list, enumerate)
controller (alias of: create-controller)
module (alias of: create-module)
model (alias of: create-model)
all-models (alias of: create-all-models)
project (alias of: create-project)
scaffold (alias of: create-scaffold)
migration (alias of: create-migration)
webtools (alias of: create-webtools)
serve (alias of: server)
console (alias of: shell, psysh)

Bây giờ chúng ta đã sẵn sàng để chạy dự án. Framework này hoạt động theo kiểu loosely coupled, bạn không cần quan tâm đến cấu trúc thư mục. trong ví dụ này, chúng tôi sẽ sử dụng cấu trúc mặc định được cung cấp bởi developer tools. Giờ hãy chuyển tới thư mục root của tên miền. Ví dụ:

cd /var/www/hostinger-tutorials.com/public_html

Tiếp theo, sử dụng lệnh sau để tạo cấu trúc thư mục và bắt đầu:

phalcon create-project example

Giờ bạn mở trình duyệt lên (truy cập YourDomain.com/example) sẽ thấy:

phalcon-framework-hostinger-vpsTạo dự án đầu tiên của bạn với Phalcon PHP Framework

Bây giờ, bạn hãy tạo ứng dụng cơ bản. Hãy tưởng tượng bạn đang tạo một dự án và muốn lấy danh sách khách hàng trước khi ra mắt. Chúng ta có thể làm vậy bằng cách tạo một mẫu form đăng ký trước và lưu thông tin khách vào MySQL databases.

Hiểu về cấu trúc thư mục của Phalcon directory

Như đã nói ở trên, framework này là loosely coupled. Có nghĩa làb bạn có thể tạo bất kỳ cấu trúc thư mục nào cho riêng bạn. Tuy nhiên, để làm thử, chúng tôi sẽ dùng cấu trúc mặc định của Phalcon developer tools. Hãy xem nhé!

Thư mục gốc của ứng dụng được biết đến là folder root. Bất kỳ thư mục nào đặt ngoài thư mục root đều không thể truy cập được bởi web server và không nằm trong dự án Phalcon. Trong trường hợp của chúng ta, nó thư mục example.

Khi bạn đã tạo dự án, thư mục sau sẽ xuất hiện trong file system:

  • App: App folder chứa các phần cốt lõi của ứng dụng. Tất cả các scripts folder và files được chứa trong thư mục này. Đặc biệt nó bao gồm:
    • Config: Như tên gọi, nó dùng để thiết lập cấu hình cần thiết. Bất kể bạn muốn thêm một thư viện mới của bên thứ 3 hay thiết lập kết nối database, bạn sẽ cần làm vậy bằng cách đặt các code liên quan trọng thư mục này.
    • Controllers: Controllers xử lý yêu cầu và thực hiện phản hồi tương ứng. Bất kỳ controller nào bạn định nghĩ sẽ nằm trong thư mục này.
    • Library: Tất cả các thư viện của bên thứ ba bạn muốn đính kèm cần đặt trong thư mục này.
    • Migrations: Nếu bạn muốn làm gì với di chuyển dữ liệum bạn sẽ cần phải thêm hoặc sửa file trong thư mục này.
    • Models: Folder này chưa gần như mọi thứ liên quan đến data. Bao gồm cả việc tương tác với database và trích xuất hoặc xuất trình data.
    • ViewsViews trong kiến trúc MVC chịu trách nhiệm để hiển thị nội dung tới người dùng. Tất cả những thông tin liên quan, như hiện nội dung trang, sẽ được đặt trong thư mục này.
  •  CacheCaching đóng vai trò lớn trong việc đảm bảo hiệu năng, và tất cả những gì liên quan đến caching sẽ đặt trong thư mục này.
  • Public: Nó chứa folders như là CSS, JavaScript, metadata, hình ảnh sẽ được uploads, file cần phải được uploads, hoặc các thông tin data tạm liên quan đến ứng dụng.

Đây là biểu đồ để giúp bạn nhớ cấu trúc mặc định của Phalcon framework:

Infographic của cấu trúc thư mục của Phalcon framework

Cấu hình kết nối MySQL Database Connection

Đầu tiên, bạn sẽ cần phải tạo MySQL database nơi ứng dụng lưu dữ liệu người dùng. Bạn có thể làm vậy trong mục MySQL Databases trong control panel.

tạo mysql database cho phalcon framework

Khi hoàn tất bạn sẽ cần tạo một bảng. Truy cập vào database bằng  phpMyadmin và tới mục SQL .

phalcon database tạo bảng

Sau đó thực thi lệnh sau:

CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(70) NOT NULL,
`email` varchar(70) NOT NULL,
PRIMARY KEY (`id`)
);

Nó sẽ tạo một bảng users với cấu trúc sau.

 

user table cho phalcon

Tiếp theo, chuyển tới /public_html/example/app/config/config.php và cấu hình kết nối database. Bạn sẽ cần phải chỉnh sửa các trường sau:

'database' => [
'host' => 'Your_MySQL_Hostname',
'username' => 'Your_MySQL_User',
'password' => 'Your_MySQL_Password',
'dbname' => 'Your_MySQL_Database',

Khi bạn đã điền xong thông tin MySQL, bạn có thể tiếp tục thực hiện bước kế tiếp.

Thêm một model mới

Bây giờ, bạn sẽ cần phải tạo một model. Nó sẽ map tới bảng user bạn vừa tạo. Dễ nhất là tạo bằng Phalcon Dev tools. Sử dụng terminal, chuyển tới thư mục root của Phalcon. Trong ví dụ này, nó sẽ là:

cd public_html/example

Đây là lệnh để tạo model cần thiết:

phalcon model users

File mới sẽ xuất hiện trong public_html/example/app/model/Users.php.

Tạo một Controller mới

Trong bài hướng dẫn này, chúng tôi sẽ tạo một trang homesignup. Controller cho trang chủ đã được tạo, cho nên bạn chỉ cần tạo một cái mới cho trang đăng ký (sign up). Chúng tôi cũng dùng Phalcon developer tools để làm. Thực thi lệnh sau để tạo thêm controller mới:

phalcon controller Signup

Nó sẽ hiện trong mục public_html/example/app/controllers/SignupController.php. Hãy ở file ra và thêm vài dòng để nó tương tác vớid atabase. Kết quả cuối cùng sẽ như sau:

<?php
class SignupController extends \Phalcon\Mvc\Controller
{
public function indexAction()
{
}
public function registerAction()
{
$user = new Users();
// Store and check for errors
$success = $user->save(
$this->request->getPost(),
[
"name",
"email",
]
);
if ($success) {
echo "Thanks you for signing up!";
} else {
echo "Oops, seems like the following issues were encountered: ";
$messages = $user->getMessages();
foreach ($messages as $message) {
echo $message->getMessage(), "<br/>";
}
}
$this->view->disable();
}
}

Tạo trang nội dung

Văn bản và nội dung cảu trang nằm trong mục public_html/example/app/views. Mỗi trang có một thư mục riêng. Bạn sẽ thấy trang index đã được tạo. Vì vậy chúng tôi sẽ cần tạo thêm một folder là signup với một file index.phtml. Định dạng .phtml cho phép bạn dùng code của HTML và cả PHP.

Đầu tiên hãy sửa file index tại public_html/example/app/views/index/index.phtml. Đây là những gì chúng tôi làm:

<div class="page-header">
<h1>Welcome to Project Phalcon</h1>
</div>
<p>Want to be the first to get the latest updates?</p>
<?php
echo $this->tag->linkTo(
"signup",
"Sign Up Here!"
);

PHP code này sẽ chuyển người dùng tới trang signup .

Tiếp tục chỉnh sửa public_html/example/app/views/signup/index.phtml. Chúng ta muốn mọi người đăng ký trên trang này, vì vậy chúng ta cần làm:

<h2>Sign up using this form</h2>
<?php echo $this->tag->form("signup/register"); ?>
<p>
<label for="name">Name</label>
<?php echo $this->tag->textField("name"); ?>
</p>
<p>
<label for="email">E-Mail</label>
<?php echo $this->tag->textField("email"); ?>
</p>
<p>
<?php echo $this->tag->submitButton("Register"); ?>
</p>
</form>

Vậy là xong, Bây giờ bạn có thể kiểm tra kết quả của Phalcon PHP framework.

Kiểm thử ứng dụng Phalcon Application

Hiện tại, ứng dụng Phalcon đặt tại thư mục public_html/example. Nên bạn cần mở trình duyệt theo đường dẫn YourDomain.com/example. Để load trực tiếpt rên YourDomain.com, bạn có thể di chuyển tất cả file ra public_html bằng File Manager.

chuyển phalcon ra public html

Tiếp theo, truy cập domain qua trình duyệt bạn sẽ thấy trang chủ:phalcon-framework-homepageNếu bạn click vào ntú Sign Up Here, nó sẽ chuyển bạn tới trang sign up bạn vừa tạo:

trang ví dụ sign up phalcon framework

Khi người dùng gửi dữ liệu, anh ấy sẽ nhận được màn hình xác nhận:

phalcon framework sign up thành công

Trong trường hợp điền sai, framework sẽ thông báo lỗi:

phalcon framework signup lỗi

Nó cũng có thể nhận ra địa chỉ email có đúng cấu trúc không. Trong trường hợp gõ sai hoặc thiếu dấu, người dùng sẽ thấy:phalcon-framework-sign-up-error-2Cuối cùng, tất cả các entries đúng sẽ xuất hiện trong bảng user trong database của bạn:

phalcon-new-database-entry

Chúc mừng! Bằng việc hoàn thành bài hướng dẫn Phalcon này, bạn đã tạo được một form đăng ký cơ bản.

Lời kết

Phalcon là một PHP framework mới. Mặc dù nó không phổ biến như Laravel hoặc các framework khác, nó có tiềm năng lớn vì tốc độ cực nhanh. Nó cũng đơn giản để cài đặt. Nếu bạn thích tạo và phát triển website, Phalcon rõ ràng là rất đáng để thử. Ai biết được, mai này nó sẽ trở thành framework ưa thích của bạn thì sao! Hãy xem qua tài liệu chính thức để biết thêm chi tiết.

Nếu bạn có bất kỳ thủ thuật, mẹo vặt, bạn thấy cần chia sẽ. Hãy cho chúng tôi biết bằng cách để lại bình luận bên dưới nhé.

Thêm bình luận

Click vào đây để bình luận

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Hãy gia nhập cùng hàng trăm subscriber của Hostinger trên thế giới

để nhận các bài hướng dẫn mới nhất tới email của bạn.

Please wait...

Cảm ơn đã đăng ký!

Tiết kiệm ngay thôi!

Mua hosting & tên miền miễn phí, tất cả trong một chỉ từ

VNĐ52.000
00
/th