Slimによる「HelloWorld!」表示
プロジェクトの準備が整ったところで、いよいよ「HelloWorld!」を表示させていきましょう。ここではファイルを2個作成します。
.htaccessの作成
まず、.htaccessファイルです。Slimでは、画像やCSS、JavaScriptファイルなどのPHP処理とは直接関係のないファイル以外は、どのURLでアクセスしてきても次項で作成するリスト2のindex.phpを呼び出す必要があります。そのために、.htaccessファイルを作成し、そこに常にindex.phpを実行する設定を記述します。リスト1の.htaccessファイルをpulicフォルダ直下に作成してください。
RewriteEngine on # (1)
RewriteCond %{REQUEST_FILENAME} !-d # (2)
RewriteCond %{REQUEST_FILENAME} !-f # (3)
RewriteRule . index.php [L] # (4)
リスト1の各行を解説しておきます。
(1)はmod_rewriteが有効な場合だけ処理する設定です。
(2)と(3)のRewriteCondはURLの書き換えルールを設定します。
%{REQUEST_FILENAME}の%{…}は環境変数を表し、REQUEST_FILENAMEは、今アクセスしてきたURLに対応したサーバ上のパス情報を表します。(2)の-dはディレクトリかどうかをチェックした結果を表し、(3)の-fはファイルかどうかをチェックした結果を表します。(2)も(3)も前に!がついているので、否定を表します。つまり、(2)と(3)は、「今アクセスしてきたURLに対応したサーバ上のパスに該当ディレクトリ(フォルダ)、もしくはファイルが存在しない場合」といった条件を表します。
この条件に合致した場合、(4)のRewriteRuleに記述したルールに則ってリクエストを移管します。RewriteRuleは、最初に移管元のパスパターンを記述し、続けて移管先のパスパターンを記述します。ここでは移管元として「.」を記述しているので、「すべて」を表します。移管先がリスト2で作成するindex.phpです。なお、(4)の最後の[L]はURLの書き換え処理の終了を意味します。
(1)~(4)の記述によって、画像やCSS、JavaScriptファイルなど、実在するファイルへのリクエストはそのままそのファイルをレスポンスとして返す一方、存在しないファイルやディレクトリへのリクエストは、すべてindex.phpが実行される仕組みとなります。
[Note].htaccessファイルの作成
.htaccessファイルは.(ドット)から始まるファイルのため、Windowsのメモ帳やMacのテキストエディットを使っての保存など、通常の方法では作成できません。詳細は他の記事に譲りますが、一番簡単に作成する方法は.htaccessファイルの作成をサポートしたテキストエディタを利用することです。筆者がお勧めするのはVisual Studio Codeです。
index.phpの作成
次に作成するのは、すべてのリクエストを受け付けるphpファイルであるindex.phpです。publicフォルダ直下にリスト2のindex.phpファイルを作成してください。
<?php
//各種クラスのuse宣言。
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Slim\App as App;
//オートロードファイルの読み込み。
require_once("../vendor/autoload.php"); // (1)
//SlimのAppクラスをnew。
$app = new App(); // (2)
//Appクラスのget()メソッドを実行。
$app->get("/hello", // (3)
//get()メソッドの2個目の引数にあたる無名関数。
function(Request $request, Response $response, array $args): void // (4)
{
//「Hello World!」の表示。
print("<h1>Hello World!</h1>"); // (5)
}
);
//Appクラスのrun()メソッドを実行。
$app->run(); // (6)
このファイルが、実際にSlimを使って「Hello World!」と表示させる処理が記述されたファイルです。処理内容は次節で解説します。
HelloWorld!の表示
ファイルが作成できれば、早速ブラウザで表示させましょう。Apacheを起動し、以下のURLにアクセスしてください。
図3の画面が表示されたら成功です。
もし表示されない場合、通常のPHPアプリと同様にエラーが表示されますので、エラー内容を参考にリスト2と見比べながらソースコードを修正してください。
