Tạo và Chạy Dự Án Slim
Slim là gì?
Slim là một micro framework PHP nhẹ, được thiết kế để xây dựng nhanh các ứng dụng web và API đơn giản nhưng mạnh mẽ. Nó cung cấp các tính năng cơ bản về routing, xử lý yêu cầu và phản hồi, phù hợp cho những dự án cần phát triển và triển khai nhanh chóng.
Các tính năng và lợi ích chính của Slim
- Nhẹ: Framework Slim rất nhỏ gọn, phù hợp để xây dựng các ứng dụng nhỏ và trung bình.
- Linh hoạt: Có thể tích hợp với bất kỳ thành phần hoặc thư viện bên thứ ba nào, cung cấp tính linh hoạt cao.
- Dễ sử dụng: API đơn giản và tài liệu rõ ràng giúp các nhà phát triển có thể nhanh chóng làm quen.
- Chức năng routing mạnh mẽ: Hỗ trợ nhiều phương thức HTTP và cấu hình routing phức tạp.
- Hỗ trợ middleware: Có thể dễ dàng thêm middleware để xử lý yêu cầu và phản hồi.
Slim là lựa chọn lý tưởng để xây dựng RESTful API và phát triển prototype nhanh chóng.
Tạo và Chạy Dự Án Slim Sử Dụ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 Slim. Chúng ta sẽ sử dụng chức năng 'máy chủ' của ServBay để thiết lập máy chủ web và thực hiện các cấu hình đơn giản để truy cập vào dự án.
Lưu ý: Nếu bạn từng sử dụng NGINX hoặc Apache
ServBay mặc định sử dụng Caddy làm máy chủ web. Đối với những người dùng chuyển từ NGINX và Apache sang ServBay, có một vài điểm thay đổi quan trọng cần chú ý:
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 và kiểm định. Các nhà phát triển chỉ cần sử dụng chức năng 'máy chủ' của ServBay để quản lý trang và không cần phải chỉnh sửa tệp cấu hình Caddy bằng tay.
Quy tắc Rewrite và .htaccess
Trong NGINX và Apache, các nhà phát triển thường cần phải tự viết các quy tắc Rewrite và tệp .htaccess để xử lý URL rewriting và các cấu hình khác. Tuy nhiên, ServBay đã cấu hình sẵn quy tắc của Caddy, vì vậy 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, xin vui lòng tham khảo Rewrite và htaccess, Cách chuyển trang web từ Apache sang ServBay, Cách chuyển trang web từ NGINX sang ServBay.
Tạo Dự Án Slim
TIP
ServBay khuyến nghị các nhà phát triển đặt trang web trong thư mục /Applications/ServBay/www
để dễ dàng quản lý.
Cài Đặt Composer
ServBay đã tích hợp Composer nên không cần cài đặt thêm.
Tạo Dự Án Slim
Sử dụng Composer để tạo một dự án Slim mới:
bashcd /Applications/ServBay/www mkdir servbay-slim-app cd servbay-slim-app composer require slim/slim "^4.0" composer require slim/psr7 -W
1
2
3
4
5Vào thư mục dự án
Vào thư mục dự án Slim mới tạo:
bashcd /Applications/ServBay/www/servbay-slim-app
1
Cấu hình ban đầu
Tạo tệp đầu vào
Trong thư mục gốc của dự án, tạo file
public/index.php
và thêm đoạn mã sau:php<?php require __DIR__ . '/../vendor/autoload.php'; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Factory\AppFactory; $app = AppFactory::create(); $app->get('/', function (Request $request, Response $response, $args) { $response->getBody()->write("Hello ServBay!"); return $response; }); $app->run();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Cấu hình máy chủ web
Sử dụng chức năng 'máy chủ' của ServBay, thiết lập máy chủ web để truy cập dự án Slim. Trong phần thiết lập 'máy chủ' của ServBay, thêm một máy chủ mới:
- Tên:
My First Slim Dev Site
- Tên miền:
servbay-slim-test.local
- Loại trang web:
PHP
- Phiên bản PHP: chọn
8.3
- Thư mục gốc của trang web:
/Applications/ServBay/www/servbay-slim-app/public
Để biết chi tiết các bước cài đặt, xin vui lòng tham khảo Thêm trang web đầu tiên.
Thêm mã mẫu
Trong tệp public/index.php
, thêm đoạn mã sau để xuất ra "Hello ServBay!":
$app->get('/', function (Request $request, Response $response, $args) {
$response->getBody()->write("Hello ServBay!");
return $response;
});
2
3
4
Truy cập trang web
Mở trình duyệt, truy cập https://servbay-slim-test.local
, bạn sẽ thấy trang web hiện thị Hello ServBay!
.
Ví dụ về cơ sở dữ liệu NoSQL
Ví dụ Memcached
Cài đặt Memcached extension
Trong ServBay, Memcached extension đã được cài đặt sẵn, không cần cài đặt thêm.
Cấu hình Memcached
Trong tệp
composer.json
, thêm phụ thuộc Memcached:json{ "require": { "slim/slim": "^4.0", "memcached/memcached": "^3.1" } }
1
2
3
4
5
6Sau đó chạy
composer update
để cài đặt phụ thuộc.Cấu hình routing
Trong tệp
public/index.php
, thêm đoạn mã sau:php$app->get('/memcached', function (Request $request, Response $response, $args) { $memcached = new Memcached(); $memcached->addServer('127.0.0.1', 11211); $cacheKey = 'my_cache_key'; $cachedData = $memcached->get($cacheKey); if ($cachedData === false) { $cachedData = 'Hello Memcached!'; $memcached->set($cacheKey, $cachedData); } $response->getBody()->write($cachedData); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Sử dụng Memcached
Mở trình duyệt, truy cập
https://servbay-slim-test.local/memcached
Ví dụ Redis
Cài đặt Redis extension
Trong ServBay, Redis extension đã được cài đặt sẵn, không cần cài đặt thêm.
Cấu hình Redis
Trong tệp
composer.json
, thêm phụ thuộc Redis:json{ "require": { "slim/slim": "^4.0", "predis/predis": "^1.1" } }
1
2
3
4
5
6Sau đó chạy
composer update
để cài đặt phụ thuộc.Cấu hình routing
Trong tệp
public/index.php
, thêm đoạn mã sau:php$app->get('/redis', function (Request $request, Response $response, $args) { $redis = new Predis\Client([ 'scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => 6379, ]); $cacheKey = 'my_cache_key'; $cachedData = $redis->get($cacheKey); if ($cachedData === null) { $cachedData = 'Hello Redis!'; $redis->set($cacheKey, $cachedData); } $response->getBody()->write($cachedData); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Sử dụng Redis
Mở trình duyệt, truy cập
https://servbay-slim-test.local/redis
Ví dụ cơ sở dữ liệu quan hệ
Tạo cấu trúc và tệp di trú cơ sở dữ liệu
Tạo tệp di trú
Sử dụng Phinx tạo tệp di trú:
bashcomposer require robmorgan/phinx vendor/bin/phinx init
1
2Chỉnh sửa tệp di trú
Trong thư mục
db/migrations
, tạo một tệp di trú mới và chỉnh sửa theo định nghĩa cấu trúc bảng cơ sở dữ liệu:phpuse Phinx\Migration\AbstractMigration; class CreateUsersTable extends AbstractMigration { public function change() { $table = $this->table('users'); $table->addColumn('name', 'string') ->addColumn('email', 'string', ['unique' => true]) ->create(); } }
1
2
3
4
5
6
7
8
9
10
11
12Chạy di trú
Sử dụng lệnh Phinx để chạy di trú, tạo bảng cơ sở dữ liệu:
bashvendor/bin/phinx migrate
1
Ví dụ MySQL
Cấu hình MySQL
Trong tệp
composer.json
, thêm phụ thuộc MySQL:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Sau đó chạy
composer update
để cài đặt phụ thuộc.Cấu hình routing
Trong tệp
public/index.php
, thêm đoạn mã sau:phpuse Illuminate\Database\Capsule\Manager as Capsule; $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'servbay_slim_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); $app->get('/mysql-add', function (Request $request, Response $response, $args) { $user = Capsule::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]' ]); $response->getBody()->write('User added'); return $response; }); $app->get('/mysql', function (Request $request, Response $response, $args) { $users = Capsule::table('users')->get(); $response->getBody()->write($users->toJson()); return $response; });
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
32Ghi dữ liệu người dùng
Mở trình duyệt, truy cập
https://servbay-slim-test.local/mysql-add
vàhttps://servbay-slim-test.local/mysql
Ví dụ PostgreSQL
Cấu hình PostgreSQL
Trong tệp
composer.json
, thêm phụ thuộc PostgreSQL:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Sau đó chạy
composer update
để cài đặt phụ thuộc.Cấu hình routing
Trong tệp
public/index.php
, thêm đoạn mã sau:phpuse Illuminate\Database\Capsule\Manager as Capsule; $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'pgsql', 'host' => '127.0.0.1', 'database' => 'servbay_slim_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); $app->get('/pgsql-add', function (Request $request, Response $response, $args) { $user = Capsule::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]' ]); $response->getBody()->write('User added'); return $response; }); $app->get('/pgsql', function (Request $request, Response $response, $args) { $users = Capsule::table('users')->get(); $response->getBody()->write($users->toJson()); return $response; });
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
32Ghi dữ liệu người dùng
Mở trình duyệt, truy cập
https://servbay-slim-test.local/pgsql-add
vàhttps://servbay-slim-test.local/pgsql
Qua các bước trên, bạn đã thành công tạo và chạy một dự án Slim, sử dụng các chức năng do ServBay cung cấp để quản lý và truy cập dự án của bạn, đồng thời kết nối với nhiều cơ sở dữ liệu và thực hiện gọi dữ liệu.