創建並運行 Slim 專案
什麼是 Slim?
Slim 是一個輕量級的 PHP 微框架,專為快速構建簡單但強大的 Web 應用程序和 API 而設計。它提供了基本的路由、請求處理和響應處理功能,適合那些需要快速開發和部署的專案。
Slim 的主要特性和優勢
- 輕量級:Slim 框架非常小巧,適用於構建小型和中型應用程序。
- 靈活性:可以與任何第三方組件或庫集成,提供極大的靈活性。
- 易於使用:簡單的 API 和清晰的文檔,使得開發者可以快速上手。
- 強大的路由功能:支持多種 HTTP 方法和複雜的路由配置。
- 中間件支持:可以輕鬆添加中間件以處理請求和響應。
Slim 是構建 RESTful API 和快速原型開發的理想選擇。
使用 ServBay 創建並運行 Slim 專案
在這篇文章中,我們將使用 ServBay 提供的 PHP 環境來創建並運行一個 Slim 專案。我們將利用 ServBay 的『主機』功能來設置 Web 伺服器,並通過簡單的配置實現專案的訪問。
注意:如果你曾經是 NGINX 或 Apache 的用戶
ServBay 默認使用 Caddy 作為 Web 伺服器。對於從 NGINX 和 Apache 遷移到 ServBay 的用戶,有一些關鍵變動點需要注意:
Caddy 配置
ServBay 已經內置了 Caddy,並且默認配置已經優化和調試好。開發者只需通過 ServBay 的『主機』功能來管理站點,無需手動修改 Caddy 配置文件。
Rewrite 規則和 .htaccess
在 NGINX 和 Apache 中,開發者通常需要自己編寫 Rewrite 規則和 .htaccess 文件來處理 URL 重寫和其他配置。然而,ServBay 出廠時已經配置好了 Caddy 的規則,因此,除非有特殊需求,否則開發者無需自己編寫這些規則。
了解更多
更多相關信息,請參閱Rewrite與htaccess、Apache網站如何遷移到ServBay、NGINX網站如何遷移到ServBay。
創建 Slim 專案
TIP
ServBay 建議開發者把網站放置在/Applications/ServBay/www
目錄下,以方便管理。
安裝 Composer
ServBay 出廠時已經自帶 Composer,無需單獨安裝。
創建 Slim 專案
使用 Composer 創建一個新的 Slim 專案:
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
5進入專案目錄
進入新創建的 Slim 專案目錄:
bashcd /Applications/ServBay/www/servbay-slim-app
1
初始化配置
創建入口文件
在專案根目錄下創建
public/index.php
文件,並添加以下代碼: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
配置 Web 伺服器
使用 ServBay 的『主機』功能,通過 Web 伺服器來訪問 Slim 專案。在 ServBay 的『主機』設置中,添加一個新的主機:
- 名字:
My First Slim Dev Site
- 域名:
servbay-slim-test.local
- 網站類型:
PHP
- PHP 版本:選擇
8.3
- 網站根目錄:
/Applications/ServBay/www/servbay-slim-app/public
詳細設置步驟請參考 添加第一個網站。
添加示例代碼
在 public/index.php
文件中添加以下代碼,以輸出 "Hello ServBay!":
$app->get('/', function (Request $request, Response $response, $args) {
$response->getBody()->write("Hello ServBay!");
return $response;
});
2
3
4
訪問網站
打開瀏覽器,訪問 https://servbay-slim-test.local
,你會看到網頁輸出 Hello ServBay!
。
NoSQL數據庫示例
Memcached 示例
安裝 Memcached 擴展
在 ServBay 中,Memcached 擴展已經預裝好,無需額外安裝。
配置 Memcached
在
composer.json
文件中添加 Memcached 依賴:json{ "require": { "slim/slim": "^4.0", "memcached/memcached": "^3.1" } }
1
2
3
4
5
6然後運行
composer update
安裝依賴。配置路由
在
public/index.php
文件中添加以下代碼: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
15使用 Memcached
打開瀏覽器,訪問
https://servbay-slim-test.local/memcached
Redis 示例
安裝 Redis 擴展
在 ServBay 中,Redis 擴展已經預裝好,無需額外安裝。
配置 Redis
在
composer.json
文件中添加 Redis 依賴:json{ "require": { "slim/slim": "^4.0", "predis/predis": "^1.1" } }
1
2
3
4
5
6然後運行
composer update
安裝依賴。配置路由
在
public/index.php
文件中添加以下代碼: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
18使用 Redis
打開瀏覽器,訪問
https://servbay-slim-test.local/redis
關係型數據庫示例
創建數據庫結構和遷移文件
創建遷移文件
使用 Phinx 創建遷移文件:
bashcomposer require robmorgan/phinx vendor/bin/phinx init
1
2編輯遷移文件
在
db/migrations
目錄下創建一個新的遷移文件,並編輯它以定義數據庫表結構: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
12運行遷移
使用 Phinx 命令運行遷移,創建數據庫表:
bashvendor/bin/phinx migrate
1
MySQL 示例
配置 MySQL
在
composer.json
文件中添加 MySQL 依賴:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6然後運行
composer update
安裝依賴。配置路由
在
public/index.php
文件中添加以下代碼: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
32寫入用戶數據
打開瀏覽器,訪問
https://servbay-slim-test.local/mysql-add
和https://servbay-slim-test.local/mysql
PostgreSQL 示例
配置 PostgreSQL
在
composer.json
文件中添加 PostgreSQL 依賴:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6然後運行
composer update
安裝依賴。配置路由
在
public/index.php
文件中添加以下代碼: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
32寫入用戶數據
打開瀏覽器,訪問
https://servbay-slim-test.local/pgsql-add
和https://servbay-slim-test.local/pgsql
通過以上步驟,您成功創建並運行了一個 Slim 專案,並使用 ServBay 提供的功能來管理和訪問您的專案,同時連接了多種數據庫並調用數據。