PHP - ルーティングを自作してみた

自作のルーティング DotRouter を開発したので簡単に紹介します。

GitHub
coccoto/dotrouter

Composer のオートロード環境前提で紹介していますが、ネームスペースに対応したオートローダーを自前で用意いただければそれでも動きます。自作オートローダーに興味のある方は、以下の記事も一緒に確認してみてください。

cococo
PHP - オートローダーを自作する

最後に DotRouter のソースコードを置いていますので、ルーティング作りの参考にしていただければ幸いです。

導入

DotRouter は PHP 7.4 以上に対応します。現時点 (2020/02/06) では一番最新のバージョンとなっていますのでご注意ください。

まず Composer から DotRouter をインストールし読み込みます

composer require coccoto/dotrouter
index.php

ここまでで環境構築は完了です。ルーティングの準備に移ります。

ルーティングマップの作成

最初にルーティングマップを作成します。DotRouter は指定のパラメーターにアクセスした時、コントローラーが起動しメソッドを実行します。

index.php

パスパラメーターの利用

パラメーターの先頭文字をコロンにすることでパスパラメーターとして扱えます。パスパラメーターは複数設置も可能です。

index.php

ネームスペースの設定

ルーティングから読込対象となるファイルのネームスペースを DotRouter に伝えます。

index.php

Composer の autoload にもネームスペースを設定します。

composer.json

実行するクラスを作成する

ルーティングで実行対象となるファイルを作成します。ここでは、以下のルールで動作するファイルを作ります。

CatController の中に foodMethod を用意します。パスパラメーターはコンストラクターの引数から取得できます。

CatController.php

使ってみる

これで準備完了です。先ほど用意した $map$namespace を DotRouter に渡してルーティングを起動します。

ルーティングマップに従って指定のクラスメソッドが実行されるようになるはずです。

index.php

紹介は以上になります。最後に DotRouter のソースコード置いておきます。持ち出し自由です。

ソースコード

受け取ったリクエストを処理するクラスです。

/src/Requst.php

ルーティング処理するクラスです。

/src/DotRouter.php

コメント