ホームページ >バックエンド開発 >PHPチュートリアル >phpシングルトンモード_PHPチュートリアル

phpシングルトンモード_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:21:27987ブラウズ

PHP の主要なアプリケーション シナリオの 1 つは、アプリケーションがデータベースを処理するシナリオです。そのため、シングルトン モードを使用してデータベースに接続するなど、アプリケーション内で多数のデータベース操作が行われます。新しい操作はすべてメモリ リソースとシステム リソースを消費するため、大量の新しい操作を避けてください。

【シングルトンモードのメリット】

1. 固有のインスタンスへのアクセス制御
2. 名前空間を縮小します。シングルトン モードは、グローバル変数の改良版です。一意のインスタンスを格納するグローバル変数による名前空間の汚染を回避します
3. 操作とプレゼンテーションの本質を考慮して、シングルトン クラスにサブクラスを含めることができます。また、この拡張クラスのインスタンスを使用してアプリケーションを構成するのは非常に簡単です。実行時に必要なクラスのインスタンスを使用してアプリケーションを構成できます。
4. インスタンスの可変数を許可します (マルチインスタンスモード)
5.クラス運用よりも柔軟

【シングルトンモードの適用シナリオ】

1. クラスがインスタンスを 1 つだけ持つことができ、クライアントが既知のアクセス ポイントからアクセスできる場合
2. このインスタンスのみがサブクラス化を通じて拡張可能である必要がある場合。また、ユーザーはコードを変更せずに拡張インスタンスを使用できる必要があります。

【シングルケースモードとその他のモード】

ファクトリ メソッド パターン: シングルトン パターンは、ファクトリ パターンを使用して独自のインスタンスを提供します。
抽象ファクトリ パターン (抽象ファクトリ パターン): 抽象ファクトリ パターンは、シングルトン パターンを使用して、特定のファクトリ クラスをシングルトン クラスに設計できます。
ビルダー モード (ビルダー モード): 構築モードでは、特定の構築クラスをシングルトン モードに設計できます

3.シングルトンパターンインスタンス

3.1 test.php


リーリー

3.2 data.php


リーリー

$obj = 新しい TestObject();

data.php を実行すると、結果:


4.PHP シングルトン モード実装の核心ポイントは次のとおりです:

1. クラスの唯一のインスタンスを保持する静的メンバー変数 (通常は $instance プライベート変数) が必要です
2. コンストラクターとクローン関数はプライベートとして宣言する必要があります。これは、外部プログラムが新しいクラスを追加してシングルトン モードの意味を失うことを防ぐためです。 3. このインスタンスにアクセスするには、パブリック静的メソッド (通常は getInstance メソッド) を提供する必要があります。これにより、一意のインスタンスへの参照が返されます
5. PHPシングルトンモードのデメリット
ご存知のとおり、PHP 言語はインタープリタ型スクリプト言語です。この動作メカニズムにより、各 PHP ページが解釈されて実行された後に、関連するすべてのリソースがリサイクルされます。言い換えれば、PHP には言語レベルでオブジェクトをメモリに常駐させる方法がありません。これは、たとえば Java では、ライフサイクル全体を通じて常に存在します。変数はページ間レベルであり、アプリケーションのライフサイクル内でこのインスタンスを真に一意にすることができます。ただし、PHP では、グローバル変数であろうとクラスの静的メンバーであろうと、すべての変数はページ レベルであり、ページが実行されるたびに新しいオブジェクトが再確立され、ページの実行後にクリアされます。 PHP のシングルトン モードは意味がないようなので、単一のページ レベルのリクエストで複数のアプリケーション シナリオが発生し、同じオブジェクト リソースを共有する必要がある場合にのみ、PHP シングルトン モードが非常に意味があると思います。


http://www.bkjia.com/PHPjc/477183.html

本当http://www.bkjia.com/PHPjc/477183.html技術記事 PHP の主要なアプリケーション シナリオの 1 つは、アプリケーションがデータベースを処理するアプリケーション シナリオです。そのため、データベース ハンドルを介してデータを接続するなど、アプリケーション内で多数のデータベース操作が行われます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。