PHPサンプルConstructor Prototype Patternプロトタイプパターンの詳細説明、prototypepattern_PHPチュートリアル

WBOY
リリース: 2016-07-12 09:07:27
オリジナル
1371 人が閲覧しました

phpサンプルのコンストラクタープロトタイプパターンの詳細な説明プロトタイプパターン、プロトタイプパターン

プロトタイプパターンの主な役割

抽象プロトタイプ (プロトタイプ) の役割: 自身をクローンするインターフェイスを宣言します
具体的なプロトタイプの役割: 自分自身のクローン作成操作を実装します

クラスがほぼ同じで一部が異なる場合、このクラスのオブジェクトが多数必要な場合、毎回同じ部分を繰り返しインスタンス化するのは非常にコストがかかり、クローン作成前に作成されたオブジェクトが同じ部分なので経費も節約できます。

PHPの実装方法は、このクラスの初期化を__construct()関数とinitialize関数で別々に処理し、プロトタイプをpublic部分であるconstructに配置し、各オブジェクトの特殊部分をinitializeに配置します。このようにして、まず初期化せずにクラスを作成し、その後クラスを複製するたびに初期化します。

これはzendフレームワークの公式マニュアル http://framework.zend.com/manual/2.0/en/user-guide/database-and-models.html に記載されていますが、詳しく説明されていませんので分析してみましょう。以下にあります

1. はじめに

zf2モデルにはデータベースアクションを操作するアシスタントクラスに相当するalbumTableクラスがあり、そこでtablegatewayが使われています。

アルバムテーブルを毎回同じクラスで初期化するため、ルートディレクトリにある module.php ファイルの getServiceConfig() に初期化作業を配置し、ファクトリモードを使用し、コールバック関数を介して毎回 ServiceManager ( $sm) が必要です。オブジェクトをインスタンス化すると、そのオブジェクトが自動的に呼び出され、alumniTable が作成されます。以下のコードから、albumTable を作成するには、同じ方法で AlbumTableGateWay も作成する必要があることがわかります。このクラスは、これから説明するプロトタイプ パターンを使用します。

2. コードの詳細説明

リーリー

プロトタイプ パターンを使用するのは TableGateWay ではなく、ResultSet クラスであることに注意してください。 tablegateway が select() や insert() などのメソッドを呼び出すたびに、結果を表す ResultSet が作成され、これらの ResultSet の共通部分が複製され、データなどの固有の部分クラスが初期化されます。

3. その他のコード例

このプロトタイプをより明確に理解するために、zend の大きなフレームワークを脇に置いて、完全なコード例を見てみましょう。

の例

PHP コンストラクターのベスト プラクティスとプロトタイプ パターン

プロトタイプ パターンに関するこの記事の前半は、実際にはコンストラクターで継承を使用してスケーラビリティを向上させる方法について説明しています。この 2 つのパターンを理解するのは簡単ではないかもしれません。プロトタイプ パターンに関する最後のコード部分を直接見てみましょう。

リーリー

これらのクラスは、実際には上記の zend コードのクラスに対応します

Dbadapter -- アダプター

RowGateWay -- ResultSet

ユーザーリポジトリ - TableGateWay

詳細については、コード内のコメントを参照してください。

ここの RowGateWay では、getusers で多数のインスタンス化が必要であることがはっきりとわかります。そのため、プロトタイプ モードが非常に必要です。

このクラスを使用するコードは次のとおりです

リーリー

上記の内容は、編集者が紹介したPHPサンプルにおけるConstructor Prototype Patternのプロトタイプパターンについて詳しく説明したものです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1061520.html技術記事 PHP の例では、プロトタイプ パターンの主な役割であるコンストラクター プロトタイプ パターンについて詳しく説明します。 抽象プロトタイプ (プロトタイプ) の役割: 自身を複製するインターフェイス固有のプロトタイプを宣言します。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート