PHPシングルトンモード

WBOY
WBOYオリジナル
2016-06-20 12:29:14719ブラウズ

著作権表示:

著者: Toutiaohao/Maisui Technology

リンク: http://toutiao.com/i6282868901994824193/

出典: Toutiao (Toutiao のクリエイティブ プラットフォーム)

転載する必要がある場合は、Tingyun College チームのメンバーである Ruan Xiaoyi まで電子メールでご連絡ください: ruanqy#tingyun.com

シングルトン モデルは次のとおりです。作成モデルとは何ですか? つまり、作成パターンはインスタンス化プロセスを抽象化します。これらは、システムがそのオブジェクトがどのように作成、構成、表現されるかに依存しないようにするのに役立ちます。クラス作成パターンは、継承を使用してインスタンス化されたクラスを変更します。オブジェクト作成パターンはインスタンス化を別のオブジェクトに委任します

概要: クラスにインスタンスが 1 つだけあることを確認し、それにアクセスするためのグローバル アクセス ポイントを提供します

使用の前提条件:

1 コンストラクターはプライベートとしてマークする必要があります (アクセス制御: 外部コードが new 演算子を使用してオブジェクトを作成することを防止します)。シングルトン クラスは他のクラスでインスタンス化できず、それ自体でのみインスタンス化できます。

2 クラスのインスタンスを保存する静的メンバー変数があります

3 このインスタンスにアクセスするためのパブリック静的メソッドがあります (getInstance() メソッドは、シングルトン クラスのインスタンスを作成するために一般的に使用されます。

4 オブジェクトがコピー (クローン作成) されないようにするには、__clone() メソッドを作成する必要があります。

なぜ使用するのかシングルトンモード?

1 php のアプリケーションは主にデータベース アプリケーションに使用されるため、アプリケーション内で多数のデータベース操作が行われることになります。シングルトン モードを使用すると、新しい操作による大量のリソースの消費を回避できます。

2 システムの場合、特定の構成情報をグローバルに制御するクラスが必要なので、Config

3 1 ページのリクエストで簡単に実装できます。すべてのコード (データベース操作クラス db など) がすべて 1 つのクラスに集中しているため、クラス内にフックを設定してログを出力し、どこでも var_dump や echo を回避できます。

コード例

try{$singleObj = \haibao\design\web\common\design\single\Single::getInstance();//$singleObj1 = clone $singleObj;echo $singleObj->getData();}catch (\Exception $e){echo $e->getMessage();exit;}<?phpnamespace haibao\design\web\common\design\single;class Single{public static $_instance;private function __construct(){}public function __clone(){trigger_error('Clone is not allow!',E_USER_ERROR);}public static function getInstance(){if(!(self::$_instance instanceof self)){self::$_instance = new self;}return self::$_instance;}public function getData(){return "<br/>".rand(1,100)."<br/>";}}

さらに技術的な記事を読みたい場合は、Tingyun Technology Blog にアクセスし、Tingyun 公式 Web サイトにアクセスして、アプリケーション パフォーマンス最適化の魔法をさらに体験してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。