Ground Sunlight

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

ユーザ用ツール

サイト用ツール


サイドバー

メインメニュー

XAMPP アレンジ

IED

WSL2

道具箱

リポジトリ編

フレームワーク編

公開ソフトウェア

メタ
リンク


このページへのアクセス
今日: 16 / 昨日: 3
総計: 2527

basic-library:fast-route:1.3

文書の過去の版を表示しています。


投稿中です。しばらくお待ちください。

リクエストルーター - fast-route

fast-routeについて

TODO:

インストール

composer require nikic/fast-route
Using version ^1.3 for nikic/fast-route
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing nikic/fast-route (v1.3.0): Downloading (100%)
Writing lock file
Generating autoload files
1 package you are using is looking for funding.
Use the `composer fund` command to find out more!
Note:
Eclipse起動中にパッケージを取得した場合は、プロジェクト・エクスプローラー内の[プロジェクト(apricote)]を右クリックして[リフレッシュ]を選択して下さい。また、新しく取得したパッケージのインテリセンスが有効にならない場合は、プロジェクトのビルトまたはクリーン&ビルドを行ってビルドリストの更新を行って下さい。

パッケージの取得が終わると composer.jsonrequire に以下が追加されます。

composer.json
{
    "require": {
        "nikic/fast-route": "^1.3"
    }
}


テストプログラム

TODO

/test/fast-route/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [L]
</IfModule>
/test/fast-route/index.php
<?php
 
require __DIR__.'/../../vendor/autoload.php';
 
$base_path = '/y2sunlight/apple/test/fast-route';
$routes = function(FastRoute\RouteCollector $r) use($base_path)
{
    $r->addRoute('GET', $base_path.'/users', 'users');
    $r->addRoute('GET', $base_path.'/user/{id:\d+}', 'user');
    $r->addRoute('GET', $base_path.'/articles/{id:\d+}[/{title}]', 'articles');
 
    // Closure
    $r->addRoute('GET', $base_path.'/', function() use($base_path){
        header("Location: " . $base_path.'/users');
    });
};
 
$dispatcher = FastRoute\simpleDispatcher($routes);
 
// Fetch method and URI from somewhere
$httpMethod = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];
 
// Strip query string (?foo=bar) and decode URI
if (false !== $pos = strpos($uri, '?')) {
     $uri = substr($uri, 0, $pos);
}
$uri = rawurldecode($uri);
 
$routeInfo = $dispatcher->dispatch($httpMethod, $uri);
switch ($routeInfo[0]) {
    case FastRoute\Dispatcher::NOT_FOUND:
        // ... 404 Not Found
        break;
    case FastRoute\Dispatcher::METHOD_NOT_ALLOWED:
        $allowedMethods = $routeInfo[1];
        // ... 405 Method Not Allowed
        break;
    case FastRoute\Dispatcher::FOUND:
        $handler = $routeInfo[1];
        $params = $routeInfo[2];
 
        $handler($params);
        break;
}
 
// Action: users
function users($vars)
{
    echo "users";
}
 
// Action: user
function user($vars)
{
    echo "user({$vars['id']})";
}
 
// Action: articles
function articles($vars)
{
    $response = "articles({$vars['id']})";
    if(array_key_exists('title', $vars))
    {
        $response.= $vars['title'];
    }
    echo $response;
}

コメント

コメントを入力. Wiki文法が有効です:
 
basic-library/fast-route/1.3.1584856168.txt.gz · 最終更新: 2020/03/22 14:49 by y2sunlight