Ground Sunlight

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

ユーザ用ツール

サイト用ツール


basic-library:fast-route:1.3

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
basic-library:fast-route:1.3 [2020/03/23 09:20]
y2sunlight [テストプログラム]
basic-library:fast-route:1.3 [2020/07/14 15:36] (現在)
y2sunlight [テストプログラム]
行 1: 行 1:
-> 投稿中です。しばらくお待ちください。 +====== リクエストルーター - FastRoute ======
- +
----- +
- +
-====== リクエストルーター - fast-route ======+
 Version 1.3 ([[https://github.com/nikic/FastRoute/blob/master/LICENSE|BSD 3-Clause License]]) Version 1.3 ([[https://github.com/nikic/FastRoute/blob/master/LICENSE|BSD 3-Clause License]])
  
行 11: 行 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]]
   * [[basic-library:idiorm:1.5|ORマッパー - Idiorm]]   * [[basic-library:idiorm:1.5|ORマッパー - Idiorm]]
   * [[basic-library:bladeone:3.37|テンプレートエンジン - BladeOne]]   * [[basic-library:bladeone:3.37|テンプレートエンジン - BladeOne]]
-  * リクエストルーター - fast-route +  * リクエストルーター - 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]]
  
行 30: 行 28:
 ---- ----
  
-===== fast-routeについて =====+===== 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 を採用することにしました。
  
 ===== インストール ===== ===== インストール =====
行 58: 行 64:
 パッケージの取得が終わると ''composer.json'' の ''require'' に以下が追加されます。 パッケージの取得が終わると ''composer.json'' の ''require'' に以下が追加されます。
  
-<code json composer.json>+<code javascript composer.json>
 { {
     "require": {     "require": {
行 81: 行 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>
行 89: 行 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='';
  
行 106: 行 113:
  
         // handlerにクロージャを指定する         // handlerにクロージャを指定する
-        $r->get('/', function() use($base)+        $r->get('[/]', function() use($base)
         {         {
             header("Location: " . $base.'/users');             header("Location: " . $base.'/users');
行 171: 行 178:
 } }
 </code> </code>
 +
 +\\
 +
basic-library/fast-route/1.3.1584922847.txt.gz · 最終更新: 2020/03/23 09:20 by y2sunlight