PHP 設計パターン - アダプター パターン アダプター
アプリケーションでは、文書化されたコード ベースを使用している可能性がありますが、多くの場合、既存の オブジェクト をさまざまな方法で使用する必要がある新しい機能を追加する必要があります。おそらく、新機能には別の名前が必要なだけかもしれません。あるいは、新機能には元の オブジェクト とはわずかに異なる動作が必要である可能性があります。
上記の問題を解決するには、アダプター モードを使用するのが良い解決策です。アダプター パターンを使用して、別の オブジェクト を作成します。このアダプターオブジェクト は、元のアプリケーションと新しい機能の間の仲介者として機能します。アダプター デザイン パターン は、特定の オブジェクト のインターフェースを、別の オブジェクト が期待するインターフェースに単純に適合させます。
コード例:
class errorObject{ private $_error; public function __construct($error){ $this->_error = $error; } public function getError(){ return $this->_error; } } class logToConsole{ private $_errorObject; public function __construct($errorObject){ $this->_errorObject = $errorObject; } public function write(){ fwrite(STDERR, $this->_errorObject->getError()); } } $error = new errorObject("404:Not Found"); $log = new logToConsole($error); $log->write();
ある日、要件が変更された場合、CSV ファイルにエラーを記録する必要があります。CSV の形式では、最初の列が数値のエラー コードで、2 番目の列がエラー テキストである必要があります。新しい要件では、ログを実装するコードが指定されていますが、問題は、コードが現在使用されているものとは異なる別のバージョンの errorObject に基づいて記述されていることです。新しい errorObject クラスには、getErrorNumber() と getErrorText() という名前の他の 2 つのメソッドがあり、logToCSV クラスで使用されます。
class logToCSV{ const CSV_LOCATION = "log.csv"; private $_errorObject; public function __construct($errorObject){ $this->_errorObject = $errorObject; } public function write(){ $line = $this->_errorObject->getErrorNumber(); $line .= ','; $line .= $this->_errorObject->getErrorText(); $line .= '\n'; file_put_contents(self::CSV_LOCATION, $line, FILE_APPEND); } }
● 既存のコード ベースの errorObject クラスを作成します。
● アダプター クラスを作成します。
これらのパブリック インターフェイスの標準化を維持する必要性を考慮すると、アダプター オブジェクト を作成することが最善の解決策です。
既存の errorObject の機能が新しく作成されたアダプター object に存在する必要があり、getErrorNumber() メソッドと getErrorText() メソッドが有効である必要があります。
class logToCSVAdapter extends errorObject{ private $_errorNumber, $_errorText; public function __construct($error){ parent::__construct($error); $parts = explode(':', $this->getError()); $this->_errorNumber = $parts[0]; $this->_errorText = $parts[1]; } public function getErrorNumber(){ return $this->_errorNumber; } public function getErrorText(){ return $this->_errorText; } } $error = new logToCSVAdapter("404:Not Found"); $log = new logToCSV($error); $log->write();
ある オブジェクトのインターフェースを別の オブジェクトに変換する必要がある場合、Adapterobjectを実装することはベストプラクティスであるだけでなく、多くのトラブルを節約することもできます。
アダプター モードの一般的な使用シナリオ:
● データベース ドライバー (各フレームワークのドライバー ソース コードを表示できます)
● Web サービス (複数の異なる Web サービスでアダプターを使用します)
上記は、PHP の設計パターン - アダプター パターンを、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









PHP は、長い間使用されている人気のある Web 開発言語です。 PHP に統合された PDO (PHP Data Object) クラスは、Web アプリケーションの開発中にデータベースと対話する一般的な方法です。ただし、一部の PHP 開発者がよく遭遇する問題は、PDO クラスを使用してデータベースと対話するときに、次のようなエラーが表示されることです。

Vue アプリケーションで axios を使用するのは非常に一般的です。axios は、ブラウザーと Node.js で使用できる Promise ベースの HTTP クライアントです。開発プロセス中に、「Uncaught(inpromise)Error: Requestfailedwithstatuscode500」というエラー メッセージが表示されることがありますが、開発者にとって、このエラー メッセージは理解および解決が難しい場合があります。この記事ではこれについて説明します

C++ コードの「error:incompletetypeisnotallowed」問題を解決します。C++ プログラミング プロセス中に、コンパイル エラーが発生することがあります。一般的なエラーの 1 つは、「error:incompletetypeisnotallowed」です。このエラーは通常、不完全な型を操作することによって発生します。この記事では、このエラーの原因を説明し、いくつかの解決策を提供します。まず、私は

C++ コードの「error:expectedinitializerbefore'datatype'」問題を解決します。C++ プログラミングでは、コードを作成するときにコンパイル エラーが発生することがあります。一般的なエラーの 1 つは、「error:expectedinitializerbefore'datatype'」です。このエラーは通常、変数宣言または関数定義で発生し、プログラムが正しくコンパイルされなかったり、

起動できない「0271: リアルタイム クロック エラー」の解決策: 1. F1 キーを押し、表示されるインターフェイスでオプション バーを 3 番目の項目「日付/時刻」に移動します; 2. システム時刻を手動で現在の時刻に変更します。 1 回; 3. F10 キーを押し、ポップアップ ダイアログ ボックスで [はい] を選択します; 4. ノートブックを再度開いて、通常どおり起動します。

ファンクションとは、関数を意味します。これは、特定の関数を備えた再利用可能なコード ブロックです。プログラムの基本コンポーネントの 1 つです。入力パラメータを受け取り、特定の操作を実行し、結果を返すことができます。その目的は、再利用可能なコード ブロックをカプセル化することです。コードの再利用性と保守性を向上させるコード。

PHP を使用して Web アプリケーションを作成する場合、データの保存に MySQL データベースがよく使用されます。 PHP は、MySQLi と呼ばれる MySQL データベースと対話する方法を提供します。ただし、MySQLi を使用している場合、以下に示すようなエラー メッセージが表示されることがあります。 PPHPFatalerror:Calltounknownfunctionmysqli_connect() このエラー メッセージは、PHP が MySQLi を見つけられないことを意味します。

PHPWarning:fopen():failedtoopenstream:No suchfileordirectory PHP 開発を使用する過程で、ファイル操作の問題がよく発生します。その 1 つが「PHPWarning:fopen():failedtoopenstream:No suchfileordirectory」です。
