ホームページ  >  記事  >  バックエンド開発  >  PHPシングルトンパターンの詳しい説明

PHPシングルトンパターンの詳しい説明

怪我咯
怪我咯オリジナル
2017-07-12 14:03:351697ブラウズ

シングルトン パターン(シングルトン パターン シングルトン パターンまたは単一要素パターン)

シングルトン パターンは、クラスのインスタンスが 1 つだけ存在することを保証し、それ自体をインスタンス化し、このインスタンスをシステム全体に提供します。

シングルトン パターンは一般的な設計パターンで、コンピューター システムでは、スレッド プール、キャッシュ、ログ オブジェクト、ダイアログ ボックス、プリンター、データベース操作、グラフィック カード ドライバーがシングルトンとして設計されることがよくあります。

シングルトン モードには、lazy スタイル シングルトン、hungry スタイル シングルトン、登録スタイル シングルトンの 3 種類があります。

それでは、なぜ PHP シングルトン パターンを使用するのでしょうか?

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

シングルトン パターンの特徴

シングルトン パターンの主な特徴は、「3 つのプライベートと 1 つのパブリック」です:
クラスの唯一のインスタンスを保持するプライベート静的メンバー変数が必要です
コンストラクター
外部プログラムがオブジェクトを作成してシングルトンの意味を失うことを防ぐために、クローン関数はプライベートとして宣言する必要があります。このインスタンスにアクセスするには、パブリック静的メソッドを提供する必要があります。通常は getInstance という名前です)。これは一意のインスタンスへの参照を返します。
シングルトン モードを使用する理由とシナリオ
PHP のほとんどのアプリケーションでは、多数の

データベース操作

が発生します。シングルトン モードを使用しない場合は、毎回新しい操作が必要になります。毎回大量のシステム リソースとメモリ リソースが消費され、データベースを開いたり閉じたりするたびに、多大なテストが行​​われ、データベースが無駄になります。したがって、シングルトン パターンはデータベース操作クラスでよく使用されます。 同様に、システム内の特定の構成情報をグローバルに制御するためにクラスが必要な場合、シングルトン モードを使用して簡単に実装できます。

PHPシングルトンモードの実装
以下は、データベース操作クラスを実装するためのPHPシングルトンモードのフレームワークです

<?php
 class Db{
 const DB_HOST=&#39;localhost&#39;;
 const DB_NAME=&#39;&#39;;
 const DB_USER=&#39;&#39;;
 const DB_PWD=&#39;&#39;;
 private $_db;
 //保存实例的私有静态变量
 private static $_instance;
 //构造函数和克隆函数都声明为私有的
 private function construct(){
  //$this->_db=mysql_connect();
 }
 private function clone(){
  //实现
 }
 //访问实例的公共静态方法
 public static function getInstance(){
  if(!(self::$_instance instanceof self)){
  self::$_instance=new self();
  }
  //或者
  if(self::$_instance===null){
  self::$_instance=new Db();
  }
  return self::$_instance;
 }
 public function fetchAll(){
  //实现
 }
 public function fetchRow(){
  //实现
 }
 }
 //类外部获取实例的引用
 $db=Db::getInstance();
?>

以上がPHPシングルトンパターンの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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