SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

軽量PHPフレームワークSlimを習得しよう

はじめてのSlimアプリで「Hello World」を表示させよう~動作原理を理解する

軽量PHPフレームワークSlimを習得しよう 第2回

Slimによる「HelloWorld!」表示

 プロジェクトの準備が整ったところで、いよいよ「HelloWorld!」を表示させていきましょう。ここではファイルを2個作成します。

.htaccessの作成

 まず、.htaccessファイルです。Slimでは、画像やCSS、JavaScriptファイルなどのPHP処理とは直接関係のないファイル以外は、どのURLでアクセスしてきても次項で作成するリスト2のindex.phpを呼び出す必要があります。そのために、.htaccessファイルを作成し、そこに常にindex.phpを実行する設定を記述します。リスト1の.htaccessファイルをpulicフォルダ直下に作成してください。

[リスト1]firstslim/src/public/.htaccess
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ファイルを作成してください。

[リスト2]firstslim/src/public/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の画面が表示されたら成功です。

図3:「Hello World!」と表示された画面
図3:「Hello World!」と表示された画面

 もし表示されない場合、通常のPHPアプリと同様にエラーが表示されますので、エラー内容を参考にリスト2と見比べながらソースコードを修正してください。

次のページ
Slimの動作原理

この記事は参考になりましたか?

軽量PHPフレームワークSlimを習得しよう連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/11330 2019/01/28 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー