PHP デザイン パターン シングルトン パターン_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:08:29
オリジナル
747 人が閲覧しました

PHPデザインパターン - シングルトンパターン

シングルトンパターン: クラスのオブジェクトをシステム内の唯一のインスタンスにします。

PHP におけるシングルトン モードの最も一般的な用途はデータベース操作です。システム内で複数のデータベース接続操作が行われてシステム リソースが浪費されることを避けるために、シングルトン モードを使用できます。データベース操作ごとに 1 つのインスタンスが使用されます。

簡単な例

クラス AClass {

// 独自のインスタンスを保存するために使用されます

パブリック静的 $instance;

// 外部オブジェクトによるオブジェクトのインスタンス化を防ぐためのプライベート コンストラクター

プライベート関数 __construct() {}

//外部オブジェクトの複製を防ぐプライベートクローン関数

プライベート関数 __clone() {}

// 静的メソッド、シングルトンアクセス統合入口

パブリック静的関数 getInstance() {

if (!(self::$instanceinstanceofself)){

self::$instance = new self();

}

self::$instance を返す;

}

// テスト

パブリック関数test() {

「完了」を返します;

}

//外部オブジェクトの複製を防ぐプライベートクローン関数

プライベート関数 __clone() {}

}

クラスBClassはAClassを拡張します{

}

// インスタンスを取得します

$aclass = AClass::getInstance();

$bclass = BClass::getInstance();

// メソッドの呼び出し

echo $aclass->test();

一部の比較的大規模なアプリケーションでは、複数のデータベースが接続される可能性があるため、共通のオブジェクトを共有する異なるデータベースによって、接続ハンドルの割り当てなどの問題が発生する可能性があります。 $instance を配列に変更し、異なるパラメーターを使用することができます

簡単な例

クラス DB {

// 独自のインスタンスを保存するために使用されます

public static $instance = array();

パブリック $conn;

// 外部オブジェクトによるオブジェクトのインスタンス化を防ぐためのプライベート コンストラクター

プライベート関数 __construct($host, $username, $password, $dbname, $port) {

$this->conn = new mysqli($host, $username, $password, $dbname, $port);

}

// 静的メソッド、シングルトンアクセス統合入口

パブリック静的関数 getInstance($host, $username, $password, $dbname, $port) {

$key = $host.":".$port;

if (!(self::$instance[$key]instanceofself)){

self::$instance[$key] = new self($host, $username, $password, $dbname, $port);#instantiation

}

return self::$instance[$key];

}

//クエリ

パブリック関数クエリ($ql) {

return $this->conn->query($sql);

}

//外部オブジェクトの複製を防ぐプライベートクローン関数

プライベート関数 __clone() {}

//リソースを解放する

パブリック関数 __destruct(){

$this->conn->close();

}

}

http://www.bkjia.com/PHPjc/951489.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/951489.html技術記事 PHP 設計パターンのシングルトン モード シングルトン モード: クラスのオブジェクトをシステム内の唯一のインスタンスにします。PHP でのシングルトン モードの最も一般的な用途はデータベース操作です。システム内に入らないようにしてください...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート