2013-03-13 28 views
33

動的なREST風のルーティングをPHPアプリケーションに追加しようとしています。私は既存のルーティングライブラリを使いたいので、ホイールを再開発する必要はありません。スタンドアロンのPHPルーティングライブラリはありますか?

しかし、スリムやF3のようなものを見ると、テンプレートとMVCのようなものはすべて私が欲しくないものがあります。私はルーティングをしたいので、私のアプリケーションには、私が必要としないフレームワークコードがたくさんあります。

ルーティングだけしかない良いライブラリがありますか?あるいは、私は完全なフレームワークをインポートしたり、ホイールを再構築したりしていますか?

+1

スリムはテンプレートになる、それはアドオンです。私は非常にスリムをお勧めしたい場合は、すべての単純なルーティングです – Luke

+3

この閉じた質問は非常に便利です。あなたは良いものを見つけましたか?私はここで同じ関心事にいる。 –

答えて

26

クラインをお試しください:

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

  • 柔軟な正規表現インスピレーション(ルーティング "klein.phpはPHP 5.3+のための超高速ルータです" Sinatra)
  • Webアプリケーションを迅速に構築するための一連の定型メソッド
  • Almosトンオーバーヘッドなし=> 2500+リクエスト/秒

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

+1

クラインはすごくいいですね! – powtac

+4

Kleinのバージョン2は、もはや単一のファイルではありません。ただし、バージョン1は引き続きこちらから入手できます。https://github.com/chriso/klein.php/tree/v1.2.0 –

+2

もう1つ:https://github.com/auraphp/Aura.Router/オーラを使用したクラインのパフォーマンス以下のベンチマーク結果も参照してください。http://stackoverflow.com/a/21013740/487878 –

5

てみ派遣により、ルータのクラスを設定することができますから、Router class of the lithium frameworkを見てください:https://github.com/noodlehaus/dispatch

require 'dispatch.php'; 

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

dispatch(); 

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

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

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

この方法では、使用するものだけをインストールします。

3

極端な高性能、ゼロ依存性、ゼロオーバーヘッド(C拡張機能をサポート)を対象としたPux(https://github.com/c9s/Pux)をチェックしてください。良好なパフォーマンスを提供しながら、独自のルーティングパスを定義するために、PUXもシナトラのようなAPIを提供します。

 
$mux = new Pux\Mux; 
$mux->any('/product', ['ProductController','listAction']); 
$mux->get('/product/:id', ['ProductController','itemAction'] , [ 
    'require' => [ 'id' => '\d+', ], 
    'default' => [ 'id' => '1', ] 
]); 
$mux->post('/product/:id', ['ProductController','updateAction'] , [ 
    'require' => [ 'id' => '\d+', ], 
    'default' => [ 'id' => '1', ] 
]); 
$mux->delete('/product/:id', ['ProductController','deleteAction'] , [ 
    'require' => [ 'id' => '\d+', ], 
    'default' => [ 'id' => '1', ] 
]); 
$route = $mux->dispatch('/product/1'); 

ベンチマーク結果:

  • 48.5x静的で「symfonyのルーティング/」よりも速く経路派遣。 (pux拡張がインストールされている)
  • 正規表現のディスパッチで "symfony/routing"よりも31倍高速です。 (pux拡張がインストールされている)
  • "klein"(pux拡張がインストールされている)よりも69倍高速です。
 
n=10000 
Runing php array - . 138796.45654569/s 
Runing pux - . 124982.98519026/s 
Runing klein - . 1801.5070399717/s 
Runing ham - . 13566.734991391/s 
Runing aura - . 39657.986477172/s 
Runing symfony/routing - . 1934.2415677861/s 

        Rate Mem php array pux aura ham symfony/routing klein 
     php array 138.8K/s 0B  ---90% -28% -9%    -1% -1% 
      pux 124.98K/s 0B  111% -- -31%-10%    -1% -1% 
      aura 39.66K/s 0B  349%315% ---34%    -4% -4% 
      ham 13.57K/s 0B  1023%921% 292% --   -14% -13% 
symfony/routing 1.93K/s 786K  7175%6461%2050%701%    -- -93% 
      klein 1.8K/s 262K  7704%6937%2201%753%   107% -- 


================================== Bar Chart ================================== 

     php array 138.8K/s | ████████████████████████████████████████████████████████████ | 
       pux 124.98K/s | ██████████████████████████████████████████████████████  | 
      aura 39.66K/s | █████████████████            | 
       ham 13.57K/s | █████               | 
    symfony/routing 1.93K/s |                | 
      klein 1.8K/s |                | 


============================== System Information ============================== 

PHP Version: 5.5.6 
CPU Brand String: Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz 

With XDebug Extension. 

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

Pux PHP Extensionのサポートにより、純粋なPHP Puxよりも1.5〜2倍高速にロードして発送することができます。

+3

あなたのテストは、1つの単純なルートでは非常に非現実的です。 〜100の現実世界のルートとより良いテスト戦略で新しいものを提供する必要があります。 Puxを検討している人なら誰でもこれを読んでください:http://nikic.github.io/2014/02/18/Fast-request-routing-using-regular-expressions.html –

5

Fastrouteはスタンドアロンルーティングライブラリです。これはOOPモデルに基づいており、完全なテストフレームワークを持っています。オープンソースとライセンスは無料です。あなた自身のプロジェクトのために変更するものを探しているなら、これは始めるのに適しています。これによって問題についてやや古い答えへ

https://github.com/nikic/FastRoute

16

私はOP場合にいくつかのより多くの最新のソリューションを言及するのはかなり良いアイデアだと思います。 - ニキータポポフによって書かれ

  • Phroutehttps://github.com/mrjgreen/phroute -
  • ジョー・グリーンによって書かれた https://github.com/nikic/FastRoute

    • FastRoute:私はあなたの質問の陶器を見たとすぐに私の心に来た

      2つのソリューション

    PhrouteはFastRouteの上に構築されているため、両方ともPHP 5.4が必要です。

    PHP 5.3以降のソリューションが必要な場合は、Slim Frameworkのルーティングをお勧めします。フレームワークに付属している他の機能を必要としない場合は、ルーティング部分を抽出して使用するだけです(SLIMはMITにライセンスされているため、何でもできる)。

    Iveはスリムルーティングスタンドアロン、私のプロジェクトで - DaGhostman \ CodeWave @ github、タグ< = 2.4を参照してください、相対的な部分はApplication\Core & Application\Controllerにあります。

    関連する問題