大きな Slim Framework アプリケーションを構成する方法

Slim マイクロフレームワークは、開発者が RESTful Web アプリケーションと API を素早く記述できるようにするマイクロフレームワークです。私はマイクロと強調しますが、Slim はまさしくそれです。軽量で機敏な PHP フレームワークで、小さな Web アプリケーションと API の構築に使用されます。CodeIgniter と Symfony(それぞれ EllisLab と Sensio Labs が作成した優れたフレームワーク)とは異なり、Slim は簡潔さと使いやすさのためにコントローラーと抽象コンポーネントを放棄します。

Slim Framework Web アプリケーションは 1 つのファイルだけで構築できます。ただし、時間の経過とともにプロジェクトの範囲とサイズは大きくなり、より良い構成が必要になります。Slim はコントローラーを使用してアプリケーションメソッドやルートを構成しません。コントローラーは Slim の関与事項ではありません。そのような中では、より大きな Slim Framework アプリケーションを構成することは可能です。以下に、私が自身の Slim Framework アプリケーションを構成する方法を示します。

ファイルシステムのレイアウト

自身が Slim Framework アプリケーションに使用しているディレクトリ構造を以下に示します。

public_html/
    .htaccess
    index.php
    styles/
    images/
    scripts/
app/
    routes/
        session.php
        member.php
        admin.php
vendor/
lib/
data/
public_html/
Slim Framework の .htaccess と index.php ファイルが含まれます。index.php ファイルは Slim Framework アプリケーションをインスタンス化して実行するファイルです。公開アセット(スタイルシート、画像、スクリプト)もこのディレクトリにあります。
app/
公開ドキュメントルートでは使用できないアプリケーションコードが含まれます。
vendor/
Twig や Smarty などのサードパーティ製のライブラリが含まれます。
lib/
アプリケーションで使用される独自のライブラリが含まれます。
data/
アプリケーションのデータベーススキーマと(必要な場合)SQLite データベースが含まれます。

ルートを別々のファイルに構成

Slim Framework アプリケーションの例としては、管理コントロールパネル、メンバー専用ページ、公開ページ(ログイン、ログアウト、登録など)があります。上記に示すファイルシステムのレイアウトでわかるように、関連するルートを別々のファイルに分割します。管理ルートは app/routes/admin.php に入ります。メンバーのルートは app/routes/member.php に入ります。セッション管理ルート(ログイン、ログアウト、登録など)は app/routes/session.php に入ります。これらのルートファイルは public_html/index.php から以下のように必要となります。

$app = new Slim();
require '../app/routes/session.php';
require '../app/routes/member.php';
require '../app/routes/admin.php';
$app->run();

非常に大きな index.php ファイルを 1 つだけ持つ代わりに、より大きな Slim Framework アプリケーションの構築をさらに容易にする小さなファイルがいくつかあります。