Tạo và chạy dự án FuelPHP
FuelPHP là gì?
FuelPHP là một framework PHP linh hoạt và mô-đun, thích hợp cho việc phát triển các ứng dụng Web hiện đại. Nó tuân theo mô hình HMVC (Hierarchical Model-View-Controller) và cung cấp nhiều tính năng và công cụ phong phú, giúp các nhà phát triển có thể nhanh chóng xây dựng các ứng dụng Web chất lượng cao. FuelPHP nỗi tiếng với tính linh hoạt, hiệu suất cao và khả năng mở rộng dễ dàng, và là framework được nhiều nhà phát triển ưa chuộng.
Các tính năng và ưu điểm chính của FuelPHP
- Kiến trúc HMVC: Hỗ trợ mô hình MVC phân cấp, thuận tiện cho việc tái sử dụng mã và phát triển mô-đun.
- Hiệu suất cao: FuelPHP nổi tiếng với hiệu suất và tốc độ cao, có thể xử lý yêu cầu nhiều người dùng cùng một lúc.
- Dễ dàng mở rộng: Cung cấp các cơ chế mở rộng phong phú, cho phép các nhà phát triển dễ dàng thêm các tính năng tùy chỉnh.
- Bảo mật: Tích hợp nhiều tính năng bảo mật như xác thực đầu vào, lọc đầu ra, và bảo vệ CSRF.
- Cộng đồng hỗ trợ mạnh mẽ: Có một cộng đồng nhà phát triển sôi nổi và nhiều tiện ích mở rộng từ bên thứ ba.
FuelPHP giúp các nhà phát triển nhanh chóng xây dựng các ứng dụng Web chất lượng cao, phù hợp với mọi quy mô dự án.
Sử dụng ServBay để tạo và chạy dự án FuelPHP
Trong bài viết này, chúng ta sẽ sử dụng môi trường PHP do ServBay cung cấp để tạo và chạy một dự án FuelPHP. Chúng ta sẽ sử dụng tính năng 'Máy chủ web' của ServBay để thiết lập máy chủ và cấu hình để truy cập dự án.
Chú ý: nếu bạn từng là người dùng NGINX hoặc Apache
ServBay mặc định sử dụng Caddy làm máy chủ web. Đối với các nhà phát triển từ NGINX và Apache chuyển sang ServBay, có một số điểm quan trọng cần lưu ý:
Cấu hình Caddy
ServBay đã tích hợp sẵn Caddy với cấu hình tối ưu. Các nhà phát triển chỉ cần sử dụng tính năng 'Máy chủ web' của ServBay để quản lý, không cần phải chỉnh sửa thủ công các tập tin cấu hình của Caddy.
Quy tắc Rewrite và .htaccess
Trong NGINX và Apache, các nhà phát triển thường phải tự viết các quy tắc Rewrite và tập tin .htaccess để xử lý việc rewrite URL và các cấu hình khác. Tuy nhiên, ServBay đã có sẵn các quy tắc cho Caddy, do đó, trừ khi có nhu cầu đặc biệt, các nhà phát triển không cần phải tự viết các quy tắc này.
Tìm hiểu thêm
Để biết thêm thông tin chi tiết, tham khảo các tài liệu Rewrite và htaccess, Cách chuyển website Apache sang ServBay, Cách chuyển website NGINX sang ServBay.
Tạo dự án FuelPHP
TIP
ServBay khuyến nghị các nhà phát triển đặt website vào thư mục /Applications/ServBay/www
để dễ quản lý.
Cài đặt Composer
ServBay đã tích hợp sẵn Composer, không cần cài đặt riêng.
Tạo dự án FuelPHP
Sử dụng Composer để tạo một dự án FuelPHP mới:
bashcd /Applications/ServBay/www mkdir servbay-fuelphp-app cd servbay-fuelphp-app composer create-project fuel/fuel .
1
2
3
4Truy cập vào thư mục dự án
Truy cập vào thư mục dự án FuelPHP mới tạo:
bashcd /Applications/ServBay/www/servbay-fuelphp-app
1
Khởi tạo cấu hình
Cài đặt kết nối cơ sở dữ liệu
Cấu hình thông tin kết nối cơ sở dữ liệu trong tập tin
fuel/app/config/development/db.php
:phpreturn [ 'default' => [ 'connection' => [ 'dsn' => 'mysql:host=localhost;dbname=fuel_dev', 'username' => 'root', 'password' => 'root', ], ], ];
1
2
3
4
5
6
7
8
9
Cấu hình máy chủ web
Sử dụng tính năng 'Máy chủ web' của ServBay để truy cập dự án FuelPHP. Trong phần cài đặt 'Máy chủ web' của ServBay, thêm một máy chủ mới:
- Tên:
My First FuelPHP Dev Site
- Tên miền:
servbay-fuelphp-test.local
- Loại website:
PHP
- Phiên bản PHP: chọn
8.3
- Thư mục gốc website:
/Applications/ServBay/www/servbay-fuelphp-app/public
Để biết các bước thiết lập chi tiết, tham khảo Thêm website đầu tiên.
Thêm mã ví dụ
Thêm đoạn mã sau vào tập tin fuel/app/classes/controller/welcome.php
:
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
class Controller_Welcome extends Controller
{
public function action_index()
{
return Response::forge('Hello ServBay!');
}
public function action_memcached()
{
Cache::set('key', 'Hello Memcached!', 60);
$value = Cache::get('key');
return Response::forge($value);
}
public function action_redis()
{
$redis = \Redis::instance();
$redis->set('key', 'Hello Redis!');
$value = $redis->get('key');
return Response::forge($value);
}
public function action_mysql_add()
{
\DB::insert('users')->set([
'name' => 'ServBay',
'email' => '[email protected]',
])->execute();
return Response::forge('User added');
}
public function action_mysql()
{
$users = \DB::select()->from('users')->execute()->as_array();
return Response::forge(json_encode($users));
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Truy cập website
Mở trình duyệt và truy cập vào các URL sau:
https://servbay-fuelphp-test.local
: Bạn sẽ thấy trang hiện thịHello ServBay!
.
Ví dụ sử dụng cơ sở dữ liệu NoSQL
Ví dụ Memcached
Cài đặt phần mở rộng Memcached
Trong ServBay, phần mở rộng Memcached đã được cài đặt sẵn, không cần cài đặt thêm.
Cấu hình Memcached
Cấu hình thông tin kết nối Memcached trong tập tin
fuel/app/config/cache.php
:phpreturn [ 'driver' => 'memcached', 'memcached' => [ 'cache_id' => 'fuel', 'servers' => [ 'default' => [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, ], ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13Thêm route
Thêm các route sau vào tập tin
fuel/app/config/routes.php
:phpreturn array( 'memcached' => 'welcome/memcached', );
1
2
3Sử dụng Memcached
Sử dụng bộ nhớ cache trong controller:
phppublic function action_memcached() { Cache::set('key', 'Hello Memcached!', 60); $value = Cache::get('key'); return Response::forge($value); }
1
2
3
4
5
6
7Mở trình duyệt và truy cập: https://servbay-fuelphp-test.local/memcached
Ví dụ Redis
Cài đặt phần mở rộng Redis
Trong ServBay, phần mở rộng Redis đã cài đặt sẵn, không cần cài đặt thêm.
Cấu hình Redis
Cấu hình thông tin kết nối Redis trong tập tin
fuel/app/config/redis.php
:phpreturn [ 'driver' => 'redis', 'redis' => [ 'database' => 'default', ], ];
1
2
3
4
5
6Thêm route
Thêm các route sau vào tập tin
fuel/app/config/routes.php
:phpreturn array( 'redis' => 'welcome/redis', );
1
2
3Sử dụng Redis
Sử dụng bộ nhớ cache trong controller:
phppublic function action_redis() { Cache::set('key', 'Hello Redis!', 60); $value = Cache::get('key'); return Response::forge($value); }
1
2
3
4
5
6
7Mở trình duyệt và truy cập: https://servbay-fuelphp-test.local/redis
Ví dụ sử dụng cơ sở dữ liệu quan hệ
Tạo cấu trúc dữ liệu và tập tin migration
Tạo tập tin migration
Sử dụng công cụ oil của FuelPHP để tạo tập tin migration:
bashphp oil g migration create_users_table
1Chỉnh sửa tập tin migration
Tìm tập tin migration mới tạo trong thư mục
fuel/app/migrations
và chỉnh sửa nó để định nghĩa cấu trúc bảng dữ liệu:php<?php namespace Fuel\Migrations; use Fuel\Core\DBUtil; class Create_users_table { public function up() { DBUtil::create_table('users', [ 'id' => ['type' => 'int', 'constraint' => 11, 'auto_increment' => true], 'name' => ['type' => 'varchar', 'constraint' => 100], 'email' => ['type' => 'varchar', 'constraint' => 100, 'unique' => true], ], ['id']); } public function down() { DBUtil::drop_table('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Chạy migration
Sử dụng công cụ oil của FuelPHP để chạy migration, tạo bảng dữ liệu:
bashphp oil refine migrate
1
Ví dụ MySQL
Cấu hình MySQL
Cấu hình thông tin kết nối MySQL trong tập tin
fuel/app/config/development/db.php
:phpreturn [ 'default' => [ 'connection' => [ 'dsn' => 'mysql:host=localhost;dbname=fuel_dev', 'username' => 'root', 'password' => 'root', ], ], ];
1
2
3
4
5
6
7
8
9Ghi dữ liệu người dùng
Ghi dữ liệu người dùng trong controller:
phppublic function action_mysql_add() { DB::insert('users')->set([ 'name' => 'ServBay', 'email' => '[email protected]', ])->execute(); return Response::forge('User added'); }
1
2
3
4
5
6
7
8
9Sử dụng MySQL
Truy xuất dữ liệu từ cơ sở dữ liệu trong controller:
phppublic function action_mysql() { $users = DB::select()->from('users')->execute()->as_array(); return Response::forge(json_encode($users)); }
1
2
3
4
5
Qua các bước trên, bạn đã thành công tạo và chạy một dự án FuelPHP, sử dụng các tính năng của ServBay để quản lý và truy cập dự án, đồng thời kết nối và truy xuất dữ liệu từ nhiều cơ sở dữ liệu. Mong rằng bài viết này có thể giúp bạn nhanh chóng làm quen với FuelPHP và áp dụng vào dự án của bạn.