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 ファイルを作成する必要がありますが、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
15Memcached の使用
ブラウザを開いて、
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
18Redis の使用
ブラウザを開いて、
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 が提供する機能を利用してプロジェクトを管理・アクセスし、複数のデータベースに接続してデータを呼び出しました。