40

PHP アプリケーションに動的な REST 風のルーティングを追加しようとしています。車輪を再発明する必要がないように、既存のルーティング ライブラリを使用したいと考えています。

しかし、Slim や F3 のようなものを見ると、テンプレートや MVC など、私が望んでいないものがすべて含まれています。ルーティングが必要なだけなので、アプリケーションには不要なフレームワーク コードが大量に含まれてしまいます。

ルーティングのみを行う優れたライブラリはありますか? それとも、完全なフレームワークをインポートしたり、車輪を再発明したりすることで立ち往生していますか?

4

7 に答える 7

29

クラインを試す:

単一ファイル、スタンドアロン、堅牢:

「klein.php は、PHP 5.3+ 向けの非常に高速なルーターです」

  • 柔軟な正規表現ルーティング (Sinatra に触発)
  • Web アプリを迅速に構築するためのボイラープレート メソッドのセット
  • オーバーヘッドがほとんどない => 1 秒あたり 2500 以上のリクエスト

https://github.com/chriso/klein.php

于 2013-03-13T17:18:36.763 に答える
6

ディスパッチを試す: https://github.com/noodlehaus/dispatch

require 'dispatch.php';

get('/', function () {
   echo "Hello world!\n";
});

dispatch();

これは、PHP 用の単一ファイル ルーティング フレームワークです。非常に軽量で、非常に扱いやすいです。これとスリムは私のお気に入りです。

本格的なフレームワークはまったく必要ありません。ORM が必要な場合は、Redbean を試してください。

テンプレート エンジンが必要な場合は、Twig を使用します。

このアプローチでは、使用するものをインストールするだけです。

于 2013-07-03T13:30:11.370 に答える
3

Pux ( https://github.com/c9s/Pux ) を確認してください。これは、非常に高いパフォーマンス、ゼロ依存性、ゼロ オーバーヘッド (C 拡張サポート付き) をターゲットにしています。優れたパフォーマンスを提供する一方で、Pux は独自のルーティング パスを定義するための Sinatra のような API も提供します。

$mux = 新しい Pux\Mux;
$mux->any('/product', ['ProductController','listAction']);
$mux->get('/product/:id', ['ProductController','itemAction'] , [
    'require' => [ 'id' => '\d+', ],
    'デフォルト' => [ 'id' => '1', ]
]);
$mux->post('/product/:id', ['ProductController','updateAction'] , [
    'require' => [ 'id' => '\d+', ],
    'デフォルト' => [ 'id' => '1', ]
]);
$mux->delete('/product/:id', ['ProductController','deleteAction'] , [
    'require' => [ 'id' => '\d+', ],
    'デフォルト' => [ 'id' => '1', ]
]);
$route = $mux->dispatch('/product/1');

ベンチマーク結果:

  • 静的ルートのディスパッチで「symfony/routing」よりも 48.5 倍高速です。(pux エクステンションをインストールした状態)
  • 正規表現によるディスパッチでは、「symfony/routing」よりも 31 倍高速です。(pux エクステンションをインストールした状態)
  • 「klein」よりも 69 倍高速です (pux 拡張機能をインストールした場合)。
n=10000
実行中のphp配列 - . 138796.45654569/秒
Runing pux - . 124982.98519026/秒
Runing klein - . 1801.5070399717/秒
ランハム - . 13566.734991391/秒
ランニングオーラ - 。39657.986477172/秒
symfony/routing を実行中 - . 1934.2415677861/秒

                     レート Mem php array pux aura ham symfony/routing klein
      PHP 配列 138.8K/s 0B ---90% -28% -9% -1% -1%
            pux 124.98K/s 0B 111% -- -31%-10% -1% -1%
           オーラ 39.66K/s 0B 349%315% ---34% -4% -4%
            ハム 13.57K/s 0B 1023%921% 292% -- -14% -13%
symfony/ルーティング 1.93K/s 786K 7175%6461%2050%701% -- -93%
          クライン 1.8K/s 262K 7704%6937%2201%753% 107% --


================================== 棒グラフ ============== ====================

        php 配列 138.8K/秒 | ████████████████████████████████████████████████████ ██████████ |
              pux 124.98K/秒 | ████████████████████████████████████████████████████ ████ |
             オーラ 39.66K/s | █████████████████ |
              ハム 13.57K/s | █████ |
  symfony/ルーティング 1.93K/秒 | | |
            クライン 1.8K/s | | |


============================== システム情報 ================== ============

PHP バージョン: 5.5.6
CPU ブランド文字列: Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz

XDebug 拡張機能を使用。

Pux は、(Symfony/Routing のように) すべてのルートを動的に構築するために計算時間を消費しないようにします。代わりに、Pux はルートをキャッシュ用のプレーンな PHP 配列にコンパイルします。コンパイルされたルートはキャッシュから非常に高速にロードできます。

Pux PHP 拡張機能のサポートにより、純粋な PHP Pux よりも 1.5​​ ~ 2 倍高速にルートをロードおよびディスパッチできます。

于 2014-01-09T07:08:02.983 に答える
1

リチウムフレームワークのRouterクラスを見てください。依存性注入を多用しているため、を呼び出すことでRouterクラスを構成できます。config()

于 2013-03-13T17:20:44.293 に答える