PHPアプリケーション。
ただし、SlimやF3などを見ると、テンプレートやMVCなどの不要なものがすべて含まれています。ルーティングが必要なだけなので、アプリケーションには必要のない多くのフレームワークコードが必要になります。
ルーティングのみを行う優れたライブラリはありますか?それとも、完全なフレームワークをインポートするか、車輪を再発明することに固執していますか?
試してくださいKlein:
単一ファイル、スタンドアロン、堅牢:
"klein.phpはPHP 5.3+"の超高速ルーターです。 "
この質問に対する古くからの回答のため、OPのケースに対する最新の解決策について言及することはかなり良い考えだと思います。
あなたの質問ウェアを見るとすぐに思い浮かんだ2つの解決策:
PhrouteはFastRouteの上に構築されているため、PHP 5.4。
PHP 5.3+ソリューションが必要な場合は、Slim Frameworkのルーティングをお勧めします。フレームワークに付属する他の機能が必要ない場合は、ルーティング部分を抽出し、それらのみを使用してください(SLIMはMITライセンスされているため、何でもできます)
私のプロジェクトでスタンドアロンのスリムルーティングを使用しました-DaGhostman\CodeWave @ github、タグ<= 2.4を参照、関連部分はApplication\Core
&Application\Controller
。
ディスパッチを試す: https://github.com/noodlehaus/dispatch
require 'dispatch.php';
get('/', function () {
echo "Hello world!\n";
});
dispatch();
これは、PHP用の単一ファイルルーティングフレームワークです。非常に軽量で、作業が非常に簡単です。これとスリムは私のお気に入りです。
本格的なフレームワークはまったく必要ありません。 ORMが必要な場合は、Redbeanを試してください。
テンプレートエンジンが必要な場合は、Twigを使用します。
このアプローチでは、使用するものをインストールするだけです。
PHP –真剣にシンプルなルーター は本当に素晴らしくシンプルです。
PHP – RegexRouter は私の意見ではさらに良いです:)
Fastrouteは、スタンドアロンのルーティングライブラリです。 OOPモデルに基づいており、完全なテストフレームワークを備えています。オープンソースとライセンスは無料です。自分のプロジェクト用に変更するものを探している場合は、これが開始に適しています。
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');
ベンチマーク結果:
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。
lithiumフレームワークのルータークラス をご覧ください。依存性注入を多用するため、ルータークラスを構成できます。 、 config()
を呼び出す