ホームページ >バックエンド開発 >PHPの問題 >PHP を使用して独自の Web フレームワークを構築するにはどうすればよいですか?

PHP を使用して独自の Web フレームワークを構築するにはどうすればよいですか?

慕斯
慕斯転載
2021-06-16 09:27:382838ブラウズ

この記事では、PHP を使用して独自の Web フレームワークを構築する方法を 1 分で学習できます。 (共有)は一定の参考値があるので、困っている友達が参考になれば幸いです。

PHP を使用して独自の Web フレームワークを構築するにはどうすればよいですか?

ここで説明する WEB は、Apache で実行される PHP WEB プログラムを指します。

まず、Apache での PHP の動作メカニズムとリクエストのライフサイクルを理解する必要があります。

PHP はスクリプト言語です。その実行プロセスは、ファイルのエントリからファイルの終わりまで始まります。他のファイルを含めたり参照したりすることができ、プロセス指向です。その過程で、オブジェクトを使用して、必要なさまざまな論理処理を実装できます。 1 つ以上のオブジェクトを使用して必要な機能を実行でき、また、実行したい機能をオブジェクトに指示することもできます。これは、オブジェクト指向の開発方法であり、一般的な開発方法です。したがって、プロセス指向の動作機構では、オブジェクト指向の開発手法を使用します。

各 HTTP リクエストのライフ サイクルも、プログラムの入り口から終了まで始まります。その中の変数は存在しなくなります。異なる HTTP リクエストの変数は独立しており、相互に影響しません。グローバル宣言、$GLOBALS グローバル配列変数、静的静的変数を使用して、同じ HTTP リクエスト内のデータを共有したり、セッションを使用してセッションレベルの共有を実現したり、キャッシュを使用してサイト全体のデータ共有を実現したりできます。 global ステートメントは、一般的にメソッド内で使用され、プロセス指向の開発で使用されますが、通常は使用されません。 $GLOBALS と static がよく使われますが、直接操作することはできず、オブジェクトまたは特別なメソッドで管理されます。たとえば、よく使用されるシングルトン モードは、$GLOBALS と static を使用して保存されます。

PHP プログラムでは、開発と保守に適したフレームワークをできるだけシンプル、効率的、明確で使いやすいものにすることを検討します。

基本的なプログラムモデルは階層化されモジュールに分割されたMVCモデルを採用していますが、MVCと連携するためには便利なURLルータが必要です。

URL ルーター: ソース コード ファイルの組織構造とコードの明瞭さを決定する非常に重要なコンポーネントです。優れたルーターは、フレームワークの使いやすさを反映して、論理エントリを簡単に見つけることができます。

モデル: 常に配列を使用してください。配列を使用する際の主な懸念は、配列の内容が不明瞭であることです。プロジェクトでは、属性はデータベース フィールドを参照するため、配列の内容は比較的明確です。モデル操作は、データ アクセス レイヤー DAO を使用してカプセル化されます。データベースアクセスにおいても、直接配列形式に変換した方が効率的です。他のシステムの対話型データ オブジェクトの場合は、通常、インターフェイス ドキュメント定義が存在します。 ORM の Active Record テクノロジについては、使用しない方が良いかどうかが決まります。

View: Smarty を使い始めましたが、パフォーマンスレポートでは、smarty が実行するメソッドに時間がかかりすぎたので、その後、ファイル 1 つで使いやすい tmd_tpl を使用しました。効率的で、変更も簡単です。ビュー テンプレートで、PHP 構文を結合し、テンプレート変数で補完します。 MVC の考え方は分離ですが、これは View で PHP 構文を使用できないという意味ではありません。 APIインターフェースであれば、データを直接特定形式の結果に変換して返すことができます。

コントローラー: またはアクションは、動作、メソッド、およびインターフェースを表します。コントローラー層は 1 層だけでは不十分な場合が多く、一般的にはインターフェース層、ビジネス層、データアクセス層、通信層に分かれています。このインターフェイスは、パラメータの検証、アクセス許可の制御、特定のサービスの呼び出し、そして最終的にデータの返しやページの表示などを担当します。すべてのビジネスにとって、インターフェイス層から始めるのが最善です。その前に、フレームワークのことだけを行うべきです。特定のビジネス実装を読む必要がある場合は、インターフェイス層の入り口に沿って読み始めるだけで済みます。実際の業務機能を実行するのはビジネス層であり、データアクセス層からデータを取得して業務処理を行う。データ アクセス層は、データベースまたは呼び出しインターフェイスからデータを取得し、簡単なデータ変換処理を実行できます。 PHPをデータ表示のフロントエンドのみとして使用し、バックエンドをC/C/GOなどで実行する場合は、ビジネス層のみをカプセル化し、ビジネス層でバックエンドにデータをリクエストするだけで済みます。 、そしてそれをインターフェース層に返します。

上記はプログラムの基本的なフレームワーク構造、またはビジネスのプロセス構造であり、通常はシステムの最も重要な部分です。しかし、実用化には程遠く、セッション処理、データベースアクセス、ログ処理など、基本的な機能の追加がまだ多く残っています。これらの基本機能は通常、フレームワークから独立しており、さまざまなフレームワークに適用できます。関数クラスはフレームワークとあまり緊密に結合すべきではなく、通常は組み合わせメソッドを使用します。これらの基本関数を使いやすい方法でコア クラスにカプセル化し、単一または複数のインスタンスを使用してそれらを呼び出すか、さらに使いやすいようにクラスをグローバル メソッドにカプセル化します。


## 上の図に示すように、センターが適切に把握され、組織化されていれば、ビジネスの能力が反映されます。これは、ビジネスの発展に伴い、ビジネスが階層化されるためです。構造は自然に形成され、周辺機器の適切な統合は、フレームワークの機能と、それを快適かつスムーズに使用/開発する方法を反映します。

関数クラスまたはビジネス クラスを呼び出す場合、クラスの読み込みまたはインポートの問題が発生します。オートロード機能を使ってみてはいかがでしょうか?個人的な経験と IDE サポートに基づくと、これは IDE にとって直感的でなく不親切だと思います。たとえば、F3 は定義されたメソッドを見つけることができません。これはオープンソース システムを学習する際の私たちの経験であり、パフォーマンスにも影響します。直接 require/include するほうが便利です。より多くのコードを記述する必要がありますが、開発、保守、読み取りに非常に便利です (名前を変更した後に参照を変更するのは不便ですが、グローバルを通じて変更できます)検索)。一部のパブリック クラスはエントリ内でグローバルに参照され、ビジネス クラスはオンデマンドで参照されます。パフォーマンスの低下?ほとんどの場合、ビジネスは垂直的であるため、一般的には require_once/include_once の代わりに require/include を使用できます。さらに数回使用しても問題ありません。まず第一に、正確性が保証され、全体的なプログラムのパフォーマンスはこれによって決まるわけではありません。自動ロードでは多くの判断、命令、スタック操作が追加され、ファイル検索やパフォーマンスの低下はさらに多くなるでしょう。ただし、適切な自動読み込みの実装を検討することはできます。ビジネス ファイルも考慮できます。フレームワーク ファイルは自動読み込みを使用せず、シンプルで、正確に配置され、効率的で、重複を避ける必要があります。

ロード後の使用方法は?メソッド、クラス オブジェクト メソッド、またはクラスの静的メソッド呼び出し?さまざまなシナリオに応じて異なります。グローバル関数は通常、構成コンテンツを取得するための thinkPHP の C メソッドなど、直接呼び出されるメソッド呼び出しです。インターフェイス層 -> ビジネス層 -> データ アクセス層の層の場合は、クラスの静的メソッド呼び出しを使用します。データベース操作クラス、一部のサードパーティ関数クラス、ポリモーフィック関数クラスなどの一部のグローバル関数操作は、通常、新しいオブジェクトを複数回生成することなくシングルトンを使用して使用されます。

リフレクション関数、アノテーション、IOC、アスペクト指向プログラミングなど、他言語で非常に便利な機能や実践については、基本的に PHP で実装できます。プロジェクトでは、実装できたからといって必ず使用しなければならないわけではありません。 LAMP は Web サイトを簡単に開発できますが、一般に Web サイトアプリケーションであり、フレームワーク (Spring など) とは異なります。メンテナンスが容易なため、ビジネスを複雑にしたりパフォーマンスを損なうことなく柔軟性が確保されます。高パフォーマンスの Web サイトは短く、フラットで、高速である必要があります。言うまでもなく、多くの Web サイトはフロントエンドのレンダリングに PHP を使用し、バックエンド ビジネスに c/c/java を使用するため、PHP Web サイトはできる限りシンプルである必要があります。企業向けWebサイトシステムであるため、業務プロセスが決まっており、最初から最後まで実行される コードに反映される業務コードは明確でなければならない 実行過程で反映・注入されると、人々の理解に影響を与えるまた、バグの特定を開発および維持する際に、フレームワークが行ったことを無視する可能性もあります。呼び出しに十分な柔軟性が必要な一部の一般的なフレームワークやサードパーティのパッケージとは異なり、柔軟性は複雑で、ある程度のパフォーマンスを犠牲にする必要があります。これらの関数を使用するには、多くの場合、事前に初期化コードや構成の初期化を行う必要があり、各 HTTP リクエストを 1 回実行する必要がありますが、初期化が 1 回しかない Java とは異なり、単純な関数であってもその必要はありません。たとえば、一部のrestfullフレームワークでは、入り口でルートを定義したり、多数の構成を定義したりすることがありますが、これにはある程度の明確さと柔軟性がありますが、この場合は、コンベンションオーバーのアイデアを使用することをお勧めします。構成。

上記の実践の中には、やや特殊または極端なものもありますが、元の --> フレームワーク (高度な機能、技術) --> 元に戻るというプロセスを経ているため、次のように理解できます。個人の独特の感情や経験。 PHP の基本機能を使用すると、プロジェクトの開始、ビジネス プロセスの理解、開発と保守が簡単になります。パフォーマンスの過度の損失がなく、位置の最適化も容易になります。つまり、原始的な単純さがパフォーマンスの最大の向上につながります。ビジネスを垂直方向に分離して記述し、何が行われたかが一目でわかると、開発効率が向上します。

最初にプロジェクトの要件に従って独自の PHP フレームワークを開発する能力がない場合は、フレームワークを初めて使用した後、他のプロジェクトでオンデマンドで独自の Web サイトを実装することを検討する必要があります。自分自身の枠組みを形成すること。

最もシンプルで使いやすい PHP Web サイト フレームワークには、ルート、コントローラー、ビュー テンプレート エンジンが必要だと思います。必要に応じて他の機能モジュールを追加できます。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHP を使用して独自の Web フレームワークを構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。