2017-04-03 3 views
0

PHP開発を始めたばかりで、私は自分の会社のWebサーバーファイルを見てきました。これまでのプログラマーは、すべての要求を処理する単一のエンドポイントを用意しました。たとえば、PHP ONEのすべてのリクエストを処理するスクリプト

www.example.com/webservice.php 

このエンドポイントを使用すると、クライアントは、必須の「アクション」パラメータを使用して無数のクエリパラメータを送信します。 "action"の値は呼び出される関数を指定します。

したがって、webservice.phpは、$ _GET ["action"]をチェックし、別のファイル(functions.php)内のそれぞれの関数を関連するパラメーター。この設計に関する

私の懸念がある: -

  • パフォーマンスの問題

とほぼ〜100ほかの「アクション」のチェックは、確か​​にそれが正しいコーディング効率的ではありませんか?

  • デザインRESTfulな哲学に関するある程度の知識を持って

の休息、私のアプローチは、このような

www.example.com/module/submodule/action.php 
+0

ここに質問がないと思います – nogad

+0

Mmhmm、あなたの質問は? –

+0

まあ、申し訳ありませんが私はそれを明確にしませんでした。私はそれが悪い場合は、私はそれが(パフォーマンス)と言うので、現在のデザインが悪いかどうかを知りたいです。私のアプローチが適切な方向にある場合、 – daisura99

答えて

1

ほとんどの大規模なPHPアプリケーションやMVCフレームワークなどのコンポーネントに分離することですURLの書き換えを使用してください。たとえURLがwww.example.com/user/get/5のように見えるとしても、実際にはindex.phpファイルからすべて始まり、おそらくroutes.phpファイルを呼び出してからディスパッチします適切なコントローラ。

しかし、それ以外のケースは理想的ではないが、問題は単一のエントリポイントではなく、そのファイルに存在するコードの品質を持っている場合は100となります。

+1

あなたの答えに感謝します! URLの書き換えについて知らなかった – daisura99

1

if-then-elseは、switchに変わる可能性があります。

もう1つのトリックは100の機能を持つことです。機能等Go_fooGo_bar、かもしれないし、いくつかの半醜いコードが所望の機能に直接行くかなど、のアクションが「foo」と「bar」あるとしましょう:

$to = @$_GET['action']; 
if (! isset($to)) die("action= must be supplied"); 
$fcn = "Go_$to"; 
$fcn->(); 

各機能解析でしょうそれが必要な引数。 (または、いくつかの/すべての前に解析することができます)

他の人が言ったように、パフォーマンスヒットはごくわずかです。速度ではなくコードの明瞭さに焦点を当てる。

<opinion>「REST」に関しては、古くからの議論を何も提供しない不必要に肥大した構文であることがわかりました。 "バージョン管理"さえ役に立たないことが分かります。引数は&widgit=123の代わりに/widgit/123です。私は=がclearer.`

関連する問題