Tạo và chạy dự án ThinkPHP 8
ThinkPHP là gì?
ThinkPHP là một framework PHP mã nguồn mở được tạo ra bởi các nhà phát triển PHP ở Trung Quốc. Nó hướng đến việc cung cấp một bộ công cụ gọn nhẹ và hiệu quả cho lập trình viên để xây dựng các ứng dụng web hiện đại. ThinkPHP cung cấp nhiều tính năng phong phú như routing, session, cache, authentication, giúp đơn giản hóa các nhiệm vụ phát triển web phổ biến.
Các đặc điểm và lợi ích chính của ThinkPHP
- Gọn nhẹ và hiệu quả: Cú pháp của ThinkPHP gọn nhẹ và hiệu quả, làm cho mã code dễ đọc và bảo trì hơn.
- Bộ tính năng phong phú: Bao gồm routing, authentication, quản lý session và cache, làm giảm tải công việc phát triển.
- ORM mạnh mẽ: ThinkPHP cung cấp các chức năng thao tác cơ sở dữ liệu mạnh mẽ, dễ dàng cho việc xử lý cơ sở dữ liệu.
- Thiết kế mô-đun: Dễ dàng tích hợp các thư viện và phần mở rộng của bên thứ ba thông qua Composer package manager.
- Cộng đồng hỗ trợ mạnh mẽ: Có một cộng đồng lớn các nhà phát triển và hệ sinh thái phong phú.
ThinkPHP có thể giúp các nhà phát triển nhanh chóng xây dựng các ứng dụng web và API chất lượng cao, phù hợp với các dự án từ quy mô nhỏ đến hệ thống doanh nghiệp lớn.
Tạo và chạy dự án ThinkPHP 8 bằng ServBay
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 ThinkPHP 8. Chúng ta sẽ sử dụng chức năng 'host' của ServBay để thiết lập web server và truy cập vào dự án thông qua cấu hình đơn giản.
Chú ý: nếu bạn đã từng sử dụng NGINX hoặc Apache
ServBay mặc định sử dụng Caddy làm web server. Đối với những người chuyển từ NGINX và Apache sang ServBay, có một số điểm thay đổi cần lưu ý:
Cấu hình Caddy
ServBay đã tích hợp sẵn Caddy và cấu hình mặc định đã được tối ưu hóa và kiểm tra kỹ lưỡng. Nhà phát triển chỉ cần sử dụng chức năng 'host' của ServBay để quản lý site, không cần chỉnh sửa file cấu hình Caddy thủ công.
Quy tắc Rewrite và .htaccess
Trong NGINX và Apache, nhà phát triển thường cần tự viết quy tắc Rewrite và file .htaccess để xử lý URL rewrite và cấu hình khác. Tuy nhiên, ServBay đã cấu hình sẵn các quy tắc cho Caddy, trừ khi có nhu cầu đặc biệt, nhà phát triển không cần tự viết các quy tắc này.
Tìm hiểu thêm
Thêm thông tin vui lòng tham khảo Rewrite và htaccess, Cách chuyển website từ Apache sang ServBay, Cách chuyển website từ NGINX sang ServBay.
Tạo dự án ThinkPHP
TIP
ServBay khuyến nghị nhà phát triển để website tại thư mục /Applications/ServBay/www
để dễ dàng quản lý.
Cài đặt Composer
ServBay đã tích hợp sẵn Composer, không cần phải cài đặt riêng.
Tạo dự án ThinkPHP
Sử dụng Composer để tạo một dự án ThinkPHP mới:
bashcd /Applications/ServBay/www composer create-project topthink/think servbay-thinkphp-app
1
2Truy cập vào thư mục dự án
Truy cập vào thư mục dự án ThinkPHP mới tạo:
bashcd /Applications/ServBay/www/servbay-thinkphp-app
1
Cấu hình ban đầu
Cấu hình biến môi trường
Trong file
config/database.php
, cấu hình thông tin kết nối cơ sở dữ liệu và các biến môi trường khác. Đảm bảo các thông số sau đã được thiết lập chính xác:php'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '3306',
1
2
3
4
5
6
Cấu hình Web Server
DANGER
Các quy tắc Rewrite của ThinkPHP khác với các quy tắc thông thường, nên cần phải tùy chỉnh.
Sử dụng chức năng 'host' của ServBay, thông qua server web để truy cập dự án ThinkPHP. Trong cài đặt 'host' của ServBay, thêm một host mới:
- Tên:
My First ThinkPHP Dev Site
- Tên miền:
servbay-thinkphp-test.local
Sau đó bấm vào cấu hình tùy chỉnh
ở góc trên bên phải và nhập vào nội dung sau đây:
encode zstd gzip
import set-log servbay-thinkphp-test.local
tls internal
@canonicalPath {
file {
try_files {path}/index.php
}
not path */
}
redir @canonicalPath {path}/ 308
root * /Applications/ServBay/www/servbay-thinkphp-app/public
route {
try_files {path} {path}/ /index.php?s={path}&{query}
php_fastcgi unix//Applications/ServBay/tmp/php-cgi-8.3.sock
}
file_server
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
TIP
Nếu cần các phiên bản PHP khác nhau, hãy thay đổi php-cgi-8.3.sock
thành phiên bản PHP tương ứng. Đồng thời chú ý thay đổi set-log
thành tên miền tương ứng của website.
Chi tiết các bước cấu hình vui lòng tham khảo Thêm website đầu tiên.
Thêm mã ví dụ
Thêm đoạn mã sau vào file route/app.php
để hiển thị "Hello ServBay!":
Route::get('servbay', function () {
return 'Hello ServBay!';
});
2
3
Truy cập website
Mở trình duyệt và truy cập vào https://servbay-thinkphp-test.local/servbay
, bạn sẽ thấy trang web hiển thị Hello ServBay!
.
Ví dụ về cơ sở dữ liệu NoSQL
Ví dụ về Memcached
Cài đặt extension Memcached
Trong ServBay, extension Memcached đã được cài đặt sẵn, không cần cài đặt thêm.
Cấu hình Memcached
Trong file
config/cache.php
, cấu hình thông tin kết nối Memcached:php'type' => 'memcached', 'host' => '127.0.0.1',
1
2Sử dụng Memcached
Trong controller sử dụng cache:
phpuse think\facade\Cache; Route::get('/memcached', function () { Cache::set('key', 'value', 600); return Cache::get('key'); });
1
2
3
4
5
6
Ví dụ về Redis
Cài đặt extension Redis
Trong ServBay, extension Redis đã được cài đặt sẵn, không cần cài đặt thêm.
Cấu hình Redis
Trong file
config/cache.php
, cấu hình thông tin kết nối Redis:php'type' => 'redis', 'host' => '127.0.0.1', 'port' => 6379, 'password' => '',
1
2
3
4Sử dụng Redis
Trong controller sử dụng cache:
phpuse think\facade\Cache; Route::get('/redis', function () { Cache::set('key', 'value'); return Cache::get('key'); });
1
2
3
4
5
6
Ví dụ về cơ sở dữ liệu quan hệ
Tạo cấu trúc cơ sở dữ liệu và file migration
Cài đặt công cụ migration
Sử dụng ThinkPHP migration tool trước tiên cần cài đặt:
bashcomposer require topthink/think-migration
1Tạo file migration
Sử dụng công cụ dòng lệnh của ThinkPHP để tạo file migration:
bashphp think migrate:create CreateUserTable
1Chỉnh sửa file migration
Trong thư mục
database/migrations
tìm file migration mới tạo và chỉnh sửa để định nghĩa cấu trúc bảng cơ sở dữ liệu:phppublic function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); }); }
1
2
3
4
5
6
7
8
9Chạy migration
Sử dụng công cụ dòng lệnh của ThinkPHP để chạy migration, tạo bảng cơ sở dữ liệu:
bashphp think migrate:run
1
Ví dụ về MySQL
Cấu hình MySQL
Trong file
config/database.php
, cấu hình thông tin kết nối MySQL:php'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '3306',
1
2
3
4
5
6Ghi dữ liệu người dùng
Trong controller ghi dữ liệu người dùng:
phpuse think\Db; Route::get('/mysql-add', function () { Db::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; });
1
2
3
4
5
6
7
8
9Sử dụng MySQL
Trong controller gọi cơ sở dữ liệu:
phpuse think\Db; Route::get('/mysql', function () { $users = Db::table('users')->select(); return json($users); });
1
2
3
4
5
6
Ví dụ về PostgreSQL
Cấu hình PostgreSQL
Trong file
config/database.php
, cấu hình thông tin kết nối PostgreSQL:php'type' => 'pgsql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '5432',
1
2
3
4
5
6Ghi dữ liệu người dùng
Trong controller ghi dữ liệu người dùng:
phpuse think\Db; Route::get('/pgsql-add', function () { Db::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; });
1
2
3
4
5
6
7
8
9Sử dụng PostgreSQL
Trong controller gọi cơ sở dữ liệu:
phpuse think\Db; Route::get('/pgsql', function () { $users = Db::table('users')->select(); return json($users); });
1
2
3
4
5
6
Qua các bước trên, bạn đã thành công tạo và chạy một dự án ThinkPHP 8 và sử dụng các tính năng của ServBay để quản lý và truy cập vào dự án của bạn, đồng thời kết nối với nhiều loại cơ sở dữ liệu và lấy dữ liệu.