PHPの3層構造(その1) 簡単な3層構造
コード 1 に示すように:
コード をコピーします。 コードは次のとおりです:
// コード 1
//外観層クラス
class LWordHomePage {
//メッセージを追加します
public function append($newLWord) {
//中間サービス層を呼び出します
$serv = new LWordServiceCore()
$serv- >append($newLWord);
}
}
// 中間サービス層
class LWordServiceCore {
// メッセージを追加
public function append( $newLWord) {
// データ アクセス層を呼び出します
$dbTask = new LWordDBTask();
$dbTask->append($newLWord);
}; >// データ アクセス層
class LWordDBTask {
//メッセージ追加
public function append($newLWord) {
//データ層コード (省略)
}
};
図 1 に示す実行タイミング図:
(図 1)、単純な 3 層構造のタイミング図
3 層構造の呼び出しシーケンスは、コードとタイミング図から直感的に理解できます。しかし、実際の開発では、この単純な 3 層構造ではニーズを満たすことができません。外観層と中間サービス層のコードから始めましょう。
外観レイヤーLWordHomePage クラスの new キーワードを直接使用して、中間サービス クラス LWordServiceCore はハードコーディング メソッドです。 実際のプロジェクト開発プロセスでは、外観層と中間サービス層が別の人によって開発される場合があります。つまり、機能モジュールは複数の人によって完成されます。外観層の LWordHomePage クラスの開発進捗は、LWordServiceCore クラスが完全に開発されるまで待つことができません (つまり、 外観層は、中間のサービス層が完全に開発されるまで待って開始することはできません)。このような連携は非常に非効率です。 プロジェクトを複数人で同時に開発できるようにするには、コード設計をカットする必要があります。アピアランス層の開発進捗に合わせて、一時的な中間サービスクラスを編成することも可能です。中間サービス層が完全に開発されたら、それを置き換えるだけです...図 2 に示すように:
(図 2)、外観レイヤーは異なるサービス間を切り替えます
明らかに、このような要件を達成するために、新しいキーワードを直接使用して外観レイヤーで LWordServiceCore クラスを作成して呼び出すのは非常に柔軟性がありません。臨機応変かつ自由に切り替えるのは難しい! !中間サービス層の一時的な実装として機能する TempService クラスを作成できます。また、TempService と LWordServiceCore という 2 つのクラスも分析する必要があります。どちらもメッセージを追加するための同じ追加関数を持っていますが、1 つは一時的なもので、もう 1 つは本物です。 TempService クラスと LWordServiceCore クラスは両方ともパブリック関数を持っているため、共通の親クラスが必要です。このパブリック上位クラスには他のメンバーや属性が存在しないことを考慮して、このパブリック上位クラスはインターフェイス、つまり ILWordService! として定義されます。 UML クラス図を図 3 に示します。
TempService または LWordServiceCore クラスのオブジェクトは、LWordHomePage クラス内で直接作成されません。作成プロセスはファクトリ クラス MyServiceFactory (シンプル ファクトリ モード) に渡されます。
このように、外観レイヤーの
LWordHomePage クラスは、ILWordService インターフェイスと外観レイヤーのみを認識する必要があります。コードは、外観層と特定のサービス コードの優れた分離を達成するために、特定の中間サービス コードが何であるかに注意を払います。 これは何に相当しますか?ちょうど 2 人のハードウェア エンジニアのように、1 人はコンピュータ グラフィックス カードを製造し、もう 1 人はコンピュータのマザーボードを製造します。グラフィックス カードを製造するエンジニアは、グラフィックス カードをテスト回路に挿入して、グラフィックス カードが適切に動作するかどうかをテストできます。同様に、マザーボードを製造するエンジニアは、マザーボードを別のテスト回路に挿入して、マザーボードが適切に動作するかどうかをテストすることもできます。 2 人のエンジニアが作業を完了したら、作業結果を結び付けることができます。これは、ほぼ半分の時間を節約できる並行開発方法です。ソフトウェアエンジニアリングの観点から、インターフェースコードを設計する際には、生産効率を向上させるために複数人による同時開発をサポートする必要があるかどうかも考慮する必要があります。
UML クラス図 (図 3 を参照) に従って、コード 2 に示すように PHP コードを変更します。
コードをコピーします
コードは次のとおりです:
// コード 2、ファクトリを通じてメッセージ サービスを作成し、
// 外観レイヤー クラス
class LWordHomePage {
// メッセージを追加
public function append($newLWord) {
// 中間サービスを呼び出します
$serv = MyServiceFactory::create();
// これは LWordService クラスではなく、ILWordService インターフェイスを操作していることに注意してください
$serv->append( $newLWord );
}
};
// メッセージ サービス インターフェイス
interface ILWordService {
public function append($newLWord); 🎜> //サービスファクトリークラス
class MyServiceFactory {
// メッセージの作成 service
public static function create() {
if (1) {
// 中間サービス層に戻る
return new LWordServiceCore();
} else {
// 一時的な実装を返します
return new TempService();
}
} // 一時サービス Class
class TempServiceimplements ILWordService {
//メッセージ追加
public function append($newLWord) {
//一時コード(省略)
}
};
// 中間サービス層
class LWordServiceCoreimplements ILWordService {
// メッセージを追加
public function append($newLWord) {
// データ アクセス層を呼び出す
$ dbTask = new LWordDBTask ();
$dbTask->append($newLWord)
};
クラス LWordDBTask {
// メッセージを追加
public function append($newLWord) {
// データ層コード (省略)
}
};
タイミング図を図 4 に示します。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
