Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


basic-library:fast-route:1.3

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
basic-library:fast-route:1.3 [2020/03/23 09:21]
y2sunlight
basic-library:fast-route:1.3 [2020/07/14 15:36] (現在)
y2sunlight [テストプログラム]
行 7: 行 7:
  
 関連記事 関連記事
-  * [[basic-library:project|プロジェクトの作成 - apricot]]+  * [[basic-library:project|プロジェクトの作成 - Apricot (α版)]]
   * [[basic-library:phpdotenv:4.1|環境変数 - phpdotenv]]   * [[basic-library:phpdotenv:4.1|環境変数 - phpdotenv]]
   * [[basic-library:monolog:2.0|ログ出力 - monolog]]   * [[basic-library:monolog:2.0|ログ出力 - monolog]]
行 13: 行 13:
   * [[basic-library:bladeone:3.37|テンプレートエンジン - BladeOne]]   * [[basic-library:bladeone:3.37|テンプレートエンジン - BladeOne]]
   * リクエストルーター - FastRoute   * リクエストルーター - FastRoute
-  * [[basic-library:whoops:2.7|エラーハンドラー - whoops]]+  * [[basic-library:league-container:3.3|DIコンテナー - League/Container]] 
 +  * [[basic-library:valitron:1.4|バリデーター - Valitron]] 
 +  * [[basic-library:whoops:2.7|エラーハンドラー - Whoops]]
   * [[basic-library:php-debugbar:1.16|デバッグ出力 - php-debugbar]]   * [[basic-library:php-debugbar:1.16|デバッグ出力 - php-debugbar]]
  
行 28: 行 30:
 ===== FastRouteについて ===== ===== FastRouteについて =====
  
->TODO:+FastRouteは、PHPコアの開発者の1人でもある [[https://nikic.github.io/aboutMe.html|Nikita]]氏が開発し、[[slim:top|Slim]] フレームワークにも採用されている高速なリクエストリーターです。興味のある方は、なぜ高速であるかを説明するNikita氏の[[http://nikic.github.io/2014/02/18/Fast-request-routing-using-regular-expressions.html|ブログ投稿]]もご覧下さい。 
 + 
 +リクエストリーターの選定に当たっては、最近の人気、実行速度、コードの品質から選びました。コードの品質については[[https://php.libhunt.com/|Awesome PHP]]を参考にしました。結果的に次の3つの候補から選びました: 
 + 
 +  * FastRoute --- https://github.com/nikic/FastRoute 
 +  * Klein --- https://github.com/klein/klein.php 
 +  * AltoRouter --- https://php.libhunt.com/altorouter-alternatives 
 + 
 +機能面を考えるとKleinとAltoRouterも捨てがたい魅力がありましたが、ORマッパーと同じく「兎に角シンプル」と「学習コストが少ない」そして何よりも''高速''という理由でFastRoute を採用することにしました。
  
 ===== インストール ===== ===== インストール =====
行 54: 行 64:
 パッケージの取得が終わると ''composer.json'' の ''require'' に以下が追加されます。 パッケージの取得が終わると ''composer.json'' の ''require'' に以下が追加されます。
  
-<code json composer.json>+<code javascript composer.json>
 { {
     "require": {     "require": {
行 77: 行 87:
 </code> </code>
  
-以下にテストコード('index.php')を示します。この例は、+以下にテストコード('index.php')を示します。この例は、[[https://github.com/nikic/FastRoute|FastRoute]]サイトの''Usage''にある基本的な使用例を追加・修正したものです。本例の詳細はコード内のコメントをご覧ください。 
 + 
 +大まかな流れは「''REQUEST_METHOD'' と ''REQUEST_URI'' でルーティングの定義を行い、それに従い ''dispatch()'' して制御をハンドラーに渡す」と言うものですが、この例ではハンドラーとして(名前のある)関数とクロージャ―(無名関数)を使いました。クラスのインスタンスメソッドの例は、[[apricot::top|Apricot]]をご覧下さい。
  
 <code php index.php> <code php index.php>
行 85: 行 97:
 // 自分(index.php)の場所を取得する // 自分(index.php)の場所を取得する
 $base = dirname($_SERVER['SCRIPT_NAME']); $base = dirname($_SERVER['SCRIPT_NAME']);
-$base = dirname("index.php"); 
 if (preg_match('/^[\\.\\\\]$/', $base)) $base=''; if (preg_match('/^[\\.\\\\]$/', $base)) $base='';
  
行 102: 行 113:
  
         // handlerにクロージャを指定する         // handlerにクロージャを指定する
-        $r->get('/', function() use($base)+        $r->get('[/]', function() use($base)
         {         {
             header("Location: " . $base.'/users');             header("Location: " . $base.'/users');
行 167: 行 178:
 } }
 </code> </code>
 +
 +\\
 +
basic-library/fast-route/1.3.1584922892.txt.gz · 最終更新: 2020/03/23 09:21 by y2sunlight