PHP シングルトン パターンの使用例の詳細な説明

php中世界最好的语言
リリース: 2023-03-25 22:32:02
オリジナル
1705 人が閲覧しました

今回は、PHP シングルトン モードの使用例について詳しく説明します。PHP シングルトン モードを使用する際の 注意事項 について、実際のケースを見てみましょう。

この記事の例では、PHP デザイン パターンにおけるシングルトン パターンの原理と実装方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

1. シングルトン モードとは

シングルトン モードは、オブジェクト作成モードとして、特定のクラスのインスタンスが 1 つだけであることを保証し、外部アクセスを提供します。このグローバル インスタンスに。インスタンスのコピーは作成されませんが、シングルトン クラス内に格納されているインスタンスへの参照を返します。

2. PHP シングルトン パターンの 3 つの要素

1. クラスの唯一のインスタンスを保存するには、静的メンバー変数が必要です。

2. 外部プログラムがインスタンスのコピーを作成またはコピーできないように、コンストラクターとクローン関数をプライベートとして宣言する必要があります。

3. このインスタンスにアクセスするには、パブリック静的メソッドを提供する必要があります。これにより、一意のインスタンスへの参照が返されます。

3. シングルトン モードを使用する理由

シングルトン モードを使用する利点は大きく、

データベース操作を例に挙げます。シングルトンモードを採用しない場合、プログラム内で多数のデータベース操作が発生する場合、毎回新しい操作を実行する必要があり、データベース接続が開かれるたびに大量のメモリリソースとシステムリソースを消費します。閉じていると、データベースに大きな影響があり、無駄になります。シングルトン モードを使用すると、インスタンス化する必要があるのは 1 回だけであり、毎回新しい操作を実行する必要がないため、リソースの消費が大幅に削減されます。

4. シングルトンモードの例

ここではデータベース操作を例に挙げます

<?php
/**
*  单例模式
**/
class Db
{
  //保存全局实例
  private static $instance;
  //数据库连接句柄
  private $db;
  //数据库连接参数
  const HOSTNAME = "127.0.0.1";
  const USERNAME = "root";
  const PASSWORD = "root";
  const DBNAME = "testdb";
  //私有化构造函数,防止外界实例化对象
  private function construct()
  {
    $this->db = mysqli_connect(self::HOSTNAME,self::USERNAME,
      self::PASSWORD,self::DBNAME);
  }
  //私有化克隆函数,防止外界克隆对象
  private function clone()
  {
  }
  //单例访问统一入口
  public static function getInstance()
  {
    if(!(self::$instance instanceof self))
    {
      self::$instance = new self();
    }
    return self::$instance;
  }
  //数据库查询操作
  public function getinfo()
  {
    $sql = "select * from testtb";
    $res = mysqli_query($this->db,$sql);
    while($row = mysqli_fetch_array($res)) {
      echo $row[&#39;testcol&#39;] . &#39;<br />&#39;;
    }
    mysqli_free_result($res);
  }
}
$mysqli = Db::getInstance();
$mysqli->getinfo();
?>
ログイン後にコピー

さらに興味深い情報については、他の関連記事に注目してください。 PHP中国語ウェブサイトで!

推奨書籍:

PHP で生成された QR コード ポスターの事例分析

PHPExcel の変更手順の詳細な説明

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート