PHP シングル エントリ モードは、一般的な大規模 Web アプリケーション開発モードであると言えます。たとえば、より人気のある PHP 開発フレームワークの一部 (zend、thinkphp、qeephp、cakephp など) はすべてシングル エントリを使用します。モード。この記事では、シングル エントリ モードとは何か、またシングル エントリ モードの長所と短所について調査します。
シングルエントランスとは何ですか?
単一の入り口とは何かを説明する前に、まず対応する複数の入り口について説明しましょう。マルチエントリとは、異なる php ファイルにアクセスして、対応する関数を実行することを意味します。たとえば、私たちが最初に PHP を学習し始めたとき、プロジェクトを実行するときは通常次のことを行いました:
index.php - ホームページ
list.php?page=5 - コンテンツリストページ
info.php?id=12 - コンテンツ詳細ページ
login.php - ユーザーログインページ
このプロジェクトでは、これは実際には複数の入り口です。
単一エントリ アプリケーションとは、1 つのファイルを使用してすべての HTTP リクエストを処理することを意味します。たとえば、コンテンツ リスト ページ、ユーザー ログイン ページ、またはコンテンツ詳細ページのいずれであっても、ファイルからindex.php ファイルにアクセスして処理されます。ブラウザ、ここにあります。index.php ファイルは、このアプリケーションの単一のエントリ ポイントです。
PHP は単一の入り口をどのように実装しますか?
一般的に、単一エントリのプログラムには、index.php にアクセスするときに特定のパラメーターが付属します。例: コンテンツリストページにアクセスするためにindex.php?action=listを定義でき、コンテンツ詳細ページにアクセスするためにindex.php?action=infoを定義できます。具体的な実装コードは次のとおりです:
リーリー上記は最も単純な単一エントリ モードのプログラムを実装しています。もちろん、実際の単一エントリ モードはこれよりもはるかに複雑になります。ただし、各関数の処理コードを合理的に編成し、特定の手順に従う方法を知っていれば、この問題を簡単に解決できます。背景の例を以下に示します。
たとえば、これからニュース管理用のバックエンドを構築します。したがって、まず、アプリケーションの機能を適切に分解する必要があります。たとえば、バックグラウンドのニュース列には、「ニュースの追加」、「ニュースの編集」、「ニュースの削除」などの複数の機能が含まれる場合があります。現時点では、この論理的に関連する機能のセットを「ニュース管理」モジュールと呼ばれる機能モジュールに組み合わせることができます。
上記の方法に従ってアプリケーションの機能を分類すると、複数の機能モジュールが得られ、各モジュールは複数の関数で構成されます (実際、単一エントリのアプリケーションでなくても、関数の分類は必要なステップです)。
1. 各機能モジュールにはサブディレクトリがあり、そのディレクトリ内の各ファイルが機能の実装コードになります。
この方法の利点は、各関数のコードが互いに分離されているため、複数人での共同作業に非常に便利であることです。欠点は、各関数間でコードとデータを共有するのがあまり便利ではないことです。例えば、ニュース管理モジュールのすべての機能には「ニュースコラムレコードの取得」という機能が必要なので、この複数の独立したファイルの編成方法を使用すると、「ニュースコラムレコードの取得」を別ファイルに記述してIncludeするしかありません。この機能を必要とするファイル。
2. 各モジュールには 1 つのファイルがあり、モジュール内の各関数は関数またはクラス メソッドとして記述されます。
メリットは言うまでもなく、コードとデータを共有するのに非常に便利です。欠点は、複数の人が同時に変更を行うと競合が発生しやすいことです。ただし、バージョン管理ソフトウェアや差分比較、マージ ツールを使用すると、競合は簡単に解決できます。
単一エントリーの申請と複数のエントリーの利点は何ですか?
シングルエントリーアプリケーションのすべての http リクエストは、index.php を通じて受信され、関数コードに転送されるため、実際の作業の多くは、index.php で行うことができます (すべてのページが同じ作業を行う必要があります)。たとえば、一元的なセキュリティ チェック、アクセス統計などを実行します。それが単一のエントリではない場合、開発者は各ファイルの先頭にセキュリティ チェック コードを忘れずに追加する必要があります。もちろん、複数エントリのセキュリティと言うかもしれません。チェックを別のファイルに書き込んでインクルードすることができます。しかし、実際には、比較的大規模なアプリケーション プロジェクトの場合、ヘッダー内の複数のインクルードを数十のファイルで一貫性を保つことは心配する必要はありません。セキュリティチェックと同様。ポータルでは、URL パラメータと投稿に対する必要な検査と特殊文字フィルタリング、ログ記録、アクセス統計、および一元的に処理できるその他のタスクを実行することもできます。これらのタスクがindex.phpに集中しているため、他の機能コードを保守する困難が軽減されることがわかります。
シングルエントリーアプリのデメリット?
すべてのものには両面があり、単一エントリーのアプリケーションも例外ではありません。すべての http リクエストは、index.php にアクセスするため、プログラムの URL はそれほど美しくなく、特に検索エンジンにとってフレンドリーではありません。たとえば、次の URL:http://www.phpernote.com/index.php?controller=posts&action=index
この種の URL は覚えにくいため、検索エンジンは通常の URL として認識しないことはわかっています。もちろん、これは次の URL と比較されます。
http://www.phpernote.com/index.php/posts/index/しかし、これは大きな問題ではありません。URL の書き換えや PATHINFO などを使用することで簡単に解決できます。
OK、シングル エントリ モードについて書いたのはここまでです。もちろん、シングル エントリ モードを深く理解したい場合は、シングル エントリ モードを使用して小さなアプリケーションを作成してみるのが最善の方法です。それの。 興味がありそうな記事