Tạo và Chạy Dự Án PHPixie trên macOS với ServBay
PHPixie là một framework PHP nhẹ, tốc độ cao, được thiết kế để phát triển ứng dụng web nhanh chóng. Framework này tuân theo mô hình HMVC (Hierarchical Model-View-Controller), mang đến cấu trúc mã gọn gàng và khả năng xử lý hiệu quả. Nhờ tính đơn giản, linh hoạt và hiệu suất cao, PHPixie được nhiều nhà phát triển lựa chọn.
Những tính năng và ưu điểm nổi bật của PHPixie
- Nhẹ: PHPixie có hệ thống lõi tối giản, chỉ bao gồm các thành phần cần thiết cho việc xây dựng ứng dụng, giúp khởi động và vận hành nhanh chóng.
- Hiệu suất cao: Thiết kế chú trọng đến hiệu quả, xử lý tốt các yêu cầu đồng thời, phù hợp với các ứng dụng đòi hỏi cao về hiệu suất.
- Dễ học: API rõ ràng, đơn giản cùng tài liệu chi tiết giúp lập trình viên tiếp cận nhanh chóng.
- Linh hoạt: Cấu trúc lỏng lẻo, cho phép tích hợp và lựa chọn thư viện bên thứ ba theo nhu cầu dự án.
- Cộng đồng sôi động: Sở hữu cộng đồng phát triển tích cực, có nhiều tiện ích mở rộng và nguồn hỗ trợ phong phú.
PHPixie giúp lập trình viên xây dựng các ứng dụng web chất lượng, hiệu suất cao một cách hiệu quả, thích hợp cho từ dự án nhỏ đến hệ thống doanh nghiệp lớn.
Tạo và chạy dự án PHPixie bằng ServBay
Bài viết này sẽ hướng dẫn bạn sử dụng môi trường phát triển web tích hợp của ServBay để tạo và triển khai một dự án PHPixie. Chúng ta sẽ dùng môi trường PHP, Composer và tính năng "Website" của ServBay để cấu hình máy chủ web, cùng những bước đơn giản để truy cập dự án và kết nối với cơ sở dữ liệu/cache.
Yêu cầu chuẩn bị
- Đã cài đặt và chạy ServBay trên macOS. ServBay bao gồm PHP, Composer, đa dạng các hệ quản trị cơ sở dữ liệu (MySQL, PostgreSQL, MongoDB, Redis...) cùng máy chủ web Caddy.
- Biết sử dụng dòng lệnh cơ bản.
Tạo dự án PHPixie
Đường dẫn khuyên dùng để lưu website
ServBay khuyến nghị bạn nên đặt tất cả dự án web nội bộ tại thư mục /Applications/ServBay/www
để dễ quản lý và kiểm soát quyền truy cập.
- Kiểm tra Composer đã cài đặt: Composer đã được tích hợp sẵn trong ServBay, bạn không cần cài thêm. Mở Terminal và gõ
composer --version
để kiểm tra. - Tạo thư mục dự án: Tại thư mục gốc web của ServBay, tạo một thư mục mới để chứa dự án PHPixie và chuyển vào thư mục đó:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Khởi tạo dự án với Composer: Chạy lệnh Composer trong thư mục dự án để lấy mẫu dự án PHPixie:bashComposer sẽ tải PHPixie và các gói phụ thuộc về thư mục hiện tại.
composer create-project phpixie/project .
1
Cấu hình máy chủ Web
Sử dụng tính năng Website của ServBay để thiết lập máy chủ web Caddy, trỏ đúng vào thư mục dự án PHPixie của bạn.
Mở giao diện ServBay.
Vào danh sách Website.
Nhấn thêm mới một website.
Nhập các thông tin sau:
- Tên: Ví dụ
My First PHPixie Dev Site
(đây là tên nhận diện trong ServBay). - Tên miền (Domain): Ví dụ
servbay-phpixie-test.local
(đây là tên miền để truy cập nội bộ qua trình duyệt). - Loại website: Chọn
PHP
. - Phiên bản PHP: Chọn phiên bản PHP mong muốn, ví dụ
8.3
. - Thư mục gốc (Document Root): Trỏ vào thư mục
web
của dự án:/Applications/ServBay/www/servbay-phpixie-app/web
.
Tại sao là thư mục
/web
?File vào chính của dự án PHPixie là
web/index.php
. Để đảm bảo an toàn và tuân thủ thực tiễn tốt, thư mục gốc của máy chủ web cần trỏ trực tiếp đến thư mụcweb
chứa file này, thay vì thư mục cao nhất của dự án. Điều này ngăn không cho truy cập trực tiếp đến các file nhạy cảm như cấu hình, thư viện, v.v.- Tên: Ví dụ
Lưu cấu hình. ServBay sẽ tự động cấu hình Caddy và cập nhật hosts nội bộ (nếu cần), để
servbay-phpixie-test.local
trỏ về máy chủ ServBay trên máy bạn.
Chi tiết các bước, tham khảo Thêm website đầu tiên.
Thêm mã ví dụ
Nhằm kiểm tra dự án vận hành đúng và demo tích hợp dữ liệu/cache, bạn hãy thêm vào mã ví dụ sau.
Tạo Controller ví dụ: Thêm file sau vào
src/App/HTTP/Controller/Home.php
. Nếu chưa có thư mục hoặc file, bạn chủ động tạo mới.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Thêm lớp Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Action trang chủ mặc định public function action_index(Request $request) { // Render template assets/templates/app/home.php return $this->template->render('app:home'); } // Action ví dụ Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // lưu dữ liệu, thời hạn 60 giây $value = $cache->get('key'); // lấy dữ liệu return $this->response()->string($value); // trả về phản hồi dạng chuỗi } // Action ví dụ Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // lưu dữ liệu $value = $redis->get('key'); // lấy dữ liệu return $this->response()->string($value); // trả về phản hồi dạng chuỗi } // Action thêm user vào MySQL/PostgreSQL public function action_add_user(Request $request) { // Sử dụng component database lấy query builder $query = $this->components->database()->query(); // Thêm dữ liệu user vào bảng 'users' $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // tạo email duy nhất ])->execute(); // thực hiện thêm return $this->response()->string('Thêm user thành công.'); // trả về thông báo thành công } // Action liệt kê user từ MySQL/PostgreSQL public function action_list_users(Request $request) { // Sử dụng component database lấy query builder $query = $this->components->database()->query(); // Lấy tất cả user từ bảng 'users' $users = $query->select('*')->from('users')->execute()->fetchAll(); // truy vấn và lấy kết quả return $this->response()->json($users); // trả kết quả dạng JSON } }
1
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67Tạo template ví dụ: Thêm file sau vào
assets/templates/app/home.php
. Nếu chưa có thư mục hoặc file, bạn chủ động tạo mới.php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to PHPixie on ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Welcome to PHPixie on ServBay</h1> <p>Trang này được tạo động bởi ứng dụng PHPixie của bạn đang chạy trên ServBay.</p> <h2>Liên kết chức năng ví dụ:</h2> <ul> <li><a href="/home/memcached">Kiểm tra Memcached</a></li> <li><a href="/home/redis">Kiểm tra Redis</a></li> <li><a href="/home/add_user">Thêm user vào database</a></li> <li><a href="/home/list_users">Liệt kê các user trong database</a></li> </ul> <p>Hãy đảm bảo bạn đã hoàn thiện các bước cấu hình database và cache.</p> </body> </html>
1
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
Truy cập website cơ bản
Sau khi cấu hình website ở ServBay và thêm mã ví dụ, bạn có thể kiểm tra hoạt động của website qua trình duyệt:
- Mở trình duyệt và vào địa chỉ
https://servbay-phpixie-test.local
. - Nếu thành công, bạn sẽ thấy trang "Welcome to PHPixie on ServBay" và các liên kết chức năng ví dụ.
Nếu không truy cập được, kiểm tra lại:
- ServBay đã chạy chưa.
- Cấu hình website trong ServBay đúng chưa (đặc biệt tên miền, loại và thư mục gốc).
- File hosts trên máy có trỏ đúng
servbay-phpixie-test.local
không (ServBay thường tự động xử lý). - Phiên bản PHP đã được kích hoạt trong ServBay chưa.
Ví dụ tích hợp database và cache
PHPixie hỗ trợ đa dạng cơ sở dữ liệu và hệ thống cache ngay trong lõi. ServBay cung cấp sẵn các phần mềm như MySQL, PostgreSQL, Redis, Memcached, bạn chỉ cần cấu hình là có thể sử dụng với dự án PHPixie.
Lưu ý quan trọng: Trước khi thao tác với database, hãy đảm bảo dịch vụ database (MySQL/PostgreSQL) đã được bật trong ServBay, và bạn đã tạo database cho dự án (ví dụ, trong bài này là servbay_phpixie_app
). Có thể dùng các phần mềm quản lý như Sequel Ace, Postico, TablePlus hoặc dòng lệnh để tạo database. Tài khoản mặc định thường là root
, mật khẩu là password
(hãy kiểm tra theo thiết lập của bạn).
Cấu hình kết nối database
Tùy theo loại database (MySQL/PostgreSQL), chỉnh sửa file assets/config/database.php
ở thư mục gốc của dự án. Địa chỉ database mặc định trong ServBay là 127.0.0.1
.
Ví dụ cấu hình MySQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Chuỗi kết nối chỉnh theo loại database và cấu hình ServBay
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // User mặc định ServBay
'password' => 'password', // Mật khẩu mặc định ServBay (tùy chỉnh nếu cần)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Ví dụ cấu hình PostgreSQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Chuỗi kết nối chỉnh theo loại database và cấu hình ServBay
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // User mặc định ServBay
'password' => 'password', // Mật khẩu mặc định ServBay (tùy chỉnh nếu cần)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Tạo bảng database (sử dụng migration)
PHPixie hỗ trợ quản lý cấu trúc database qua migration (di chuyển và kiểm soát phiên bản).
- Mở Terminal: Vào thư mục gốc dự án PHPixie:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Tạo file migration: Chạy công cụ CLI của PHPixie tạo file migration tạo bảng
users
:bashLệnh này sẽ tạo file mới trong thư mụcphp pixie generate:migration create_users_table
1assets/migrations
, tên file có timestamp. - Chỉnh sửa file migration: Mở file mới tạo (ví dụ
YYYY_MM_DD_HHMMSS_create_users_table.php
) và chỉnh phương thứcup()
vàdown()
để tạo cấu trúc bảng:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Dùng schema builder tạo bảng 'users' $this->schema->create('users', function(Table $table) { $table->increments('id'); // Khóa chính tự tăng $table->string('name'); // Cột tên $table->string('email')->unique(); // Cột email, unique $table->timestamps(); // Cột thời gian created_at, updated_at }); } public function down() { // Dùng schema builder xóa bảng 'users' $this->schema->drop('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - Chạy migration: Tại thư mục gốc, chạy lệnh sau để tạo bảng
users
:bashNếu thành công, bạn sẽ thấy thông báo migration thành công. Kiểm tra bằng phần mềm quản lý database để xác nhận bảngphp pixie migrate
1users
đã tạo trong databaseservbay_phpixie_app
.
Sử dụng database quan hệ (MySQL/PostgreSQL)
Trong controller ví dụ src/App/HTTP/Controller/Home.php
, đã có các phương thức action_add_user
và action_list_users
để thao tác với MySQL/PostgreSQL.
- Thêm user: Truy cập
https://servbay-phpixie-test.local/home/add_user
sẽ thêm một bản ghi user mới vào bảngusers
. - Liệt kê user: Truy cập
https://servbay-phpixie-test.local/home/list_users
sẽ lấy tất cả user trong bảng, trả về dưới dạng JSON.
Cấu hình và sử dụng database NoSQL (Memcached/Redis)
ServBay đã cài sẵn Memcached và Redis cùng các extension PHP. Chỉ cần cấu hình trong dự án PHPixie là có thể dùng ngay.
Cấu hình Memcached (assets/config/cache.php
):
Tạo hoặc chỉnh file assets/config/cache.php
và thêm thông tin Memcached:
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Địa chỉ mặc định Memcached trên ServBay
'port' => 11211, // Port mặc định Memcached trên ServBay
'weight' => 100,
],
],
],
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Cấu hình Redis (assets/config/redis.php
):
Tạo hoặc chỉnh file assets/config/redis.php
và thêm thông tin Redis:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Địa chỉ mặc định Redis trên ServBay
'port' => 6379, // Port mặc định Redis trên ServBay
'timeout' => 0,
'database' => 0, // Chỉ số database của Redis
],
];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Sử dụng Memcached/Redis:
Các action action_memcached
và action_redis
trong controller đã demo cách sử dụng cache của PHPixie (bên dưới có thể chọn dùng Memcached hoặc Redis qua cấu hình).
- Kiểm tra Memcached: Truy cập
https://servbay-phpixie-test.local/home/memcached
sẽ ghi và đọc giá trị từ Memcached, hiển thị kết quả. - Kiểm tra Redis: Truy cập
https://servbay-phpixie-test.local/home/redis
sẽ ghi và đọc giá trị từ Redis, hiển thị kết quả.
Đảm bảo các phần mềm Memcached và Redis đã được bật trong ServBay.
Tổng kết
Qua các bước trên, bạn đã thiết lập thành công dự án PHPixie trên môi trường macOS với ServBay: từ khởi tạo dự án bằng Composer, cấu hình máy chủ web bằng tính năng Website của ServBay, cài đặt và tích hợp cơ sở dữ liệu, cache, đến kiểm tra các chức năng cơ bản.
Môi trường tích hợp của ServBay giúp việc xây dựng môi trường phát triển PHP trở nên dễ dàng hơn, để bạn tập trung vào việc lập trình thay vì các thao tác kỹ thuật tốn thời gian. Hy vọng bài viết này giúp bạn dễ dàng bắt đầu với PHPixie và xây dựng các dự án web chất lượng cao!