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

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

墨辰丷
墨辰丷オリジナル
2018-05-29 13:31:152089ブラウズ

この記事では、PHP シングルトン モードの概念、シングルトン モードの特徴、シングルトン モードを使用する理由とシナリオ、および必要なプログラマーが参照できる PHP シングルトン モードのコード例について説明します。

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

シングルトンパターンの概念

シングルトンパターンとは、あるクラスがアプリケーション全体でオブジェクトインスタンスを一つだけ持つ設計パターンのことを指します。具体的には、オブジェクト作成の方法として、シングルトン パターンは、クラスがインスタンスを 1 つだけ持つことを保証し、クラス自体をインスタンス化し、このインスタンスをシステム全体にグローバルに提供します。インスタンスのコピーは作成されませんが、シングルトン クラス内に格納されているインスタンスへの参照を返します。

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

シングルトン パターンの主な特徴は、「プライベート 3 つとパブリック 1 つ」です:

クラスの唯一のインスタンスを保持するプライベート静的メンバー変数が必要です

コンストラクターは必須です 外部プログラムがオブジェクトを新規作成してシングルトンの意味を失うことを防ぐために、プライベートとして宣言されています

オブジェクトが複製されるのを防ぐために、クローン関数はプライベートとして宣言される必要があります

public staticを提供する必要がありますメソッド (通常は 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チュートリアル

phpの基本デザインパターン(登録ツリーパターン)、ファクトリモード、シングルカラムモード)、デザインモードシングルカラム

PHPオブジェクト指向-シングルカラムモード

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

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