web-dev-qa-db-ja.com

スタンドアロンPHPルーティングライブラリはありますか?

PHPアプリケーション。

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

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

38
abeger

試してくださいKlein

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

"klein.phpはPHP 5.3+"の超高速ルーターです。 "

  • 柔軟な正規表現ルーティング(Sinatraに触発された)
  • Webアプリを迅速に構築するための定型的なメソッドのセット
  • ほとんどオーバーヘッドなし=> 2500+リクエスト/秒

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

28
Kartik

この質問に対する古くからの回答のため、OPのケースに対する最新の解決策について言及することはかなり良い考えだと思います。

あなたの質問ウェアを見るとすぐに思い浮かんだ2つの解決策:

PhrouteはFastRouteの上に構築されているため、PHP 5.4。

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

私のプロジェクトでスタンドアロンのスリムルーティングを使用しました-DaGhostman\CodeWave @ github、タグ<= 2.4を参照、関連部分はApplication\CoreApplication\Controller

17

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

require 'dispatch.php';

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

dispatch();

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

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

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

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

6
Anonymous

PHP –真剣にシンプルなルーター は本当に素晴らしくシンプルです。
PHP – RegexRouter は私の意見ではさらに良いです:)

5
CoR

Fastrouteは、スタンドアロンのルーティングライブラリです。 OOPモデルに基づいており、完全なテストフレームワークを備えています。オープンソースとライセンスは無料です。自分のプロジェクト用に変更するものを探している場合は、これが開始に適しています。

https://github.com/nikic/FastRoute

5
mAsT3RpEE

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

ベンチマーク結果:

  • 静的ルートディスパッチで「symfony/routing」より48.5倍高速。 (pux拡張機能がインストールされている場合)
  • 正規表現のディスパッチでは、「symfony/routing」より31倍高速です。 (pux拡張機能がインストールされている場合)
  • 「klein」よりも69倍高速(pux拡張機能がインストールされている場合)。
 n = 10000 
実行中のphp配列-。 138796.45654569/s 
 Runing pux-。 124982.98519026/s 
ランニングクライン-。 1801.5070399717/s 
ランハム-。 13566.734991391/s 
 Runing aura-。 39657.986477172/s 
 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%
ハム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%-
 
 
 ===== =============================棒グラフ================== =============== 
 
 php配列138.8K/s | ██████████████████████████████████████████████████████ ██████████| 
 pux 124.98K/s | ██████████████████████████████████████████████████████ ████| 
オーラ39.66K/s | █████████████████| 
ハム13.57K/s | █████| 
 symfony/routing 1.93K/s | | 
 klein 1.8K/s | | 
 
 
 ==============================システム情報== ============================ 
 
 PHPバージョン:5.5.6 
 CPUブランド文字列:Intel(R)Core(TM)i5-3427U CPU @ 1.80GHz 
 
 XDebug Extension。

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

Pux PHP拡張機能のサポートにより、純粋なPHP Pux。

3
c9s

lithiumフレームワークのルータークラス をご覧ください。依存性注入を多用するため、ルータークラスを構成できます。 、 config()を呼び出す

1
powtac