ホームページ >バックエンド開発 >PHPチュートリアル >PHP 設計パターン シングルトン パターンを学ぶ

PHP 設計パターン シングルトン パターンを学ぶ

WBOY
WBOYオリジナル
2016-07-25 09:05:17793ブラウズ
  1. /**

  2. * PHP デザイン パターン シングルトン モード
  3. * $_instance は静的プライベート変数として宣言する必要があります
  4. * 外部プログラムが新しい
  5. * クラスを作成してシングルトン モードの意味を失うことを防ぐために、コンストラクターとデストラクターはプライベートとして宣言する必要があります
  6. * getInstance () メソッドは public に設定する必要があり、インスタンスへの参照を返すにはこのメソッドを呼び出す必要があります
  7. *:: 演算子は静的変数と静的関数にのみアクセスできます
  8. * 新しいオブジェクトはメモリを消費します
  9. *シナリオ: 最も一般的に使用される場所はデータベース接続です。
  10. * シングルトン パターンを使用してオブジェクトを生成した後、
  11. * オブジェクトは他の多くのオブジェクトで使用できます。
  12. * @link http://bbs.it-home.org
  13. */

  14. class Danli {

  15. //クラスインスタンスを保存する静的メンバー変数
  16. private static $ _instance;
  17. //プライベートタグの構築メソッド
  18. private function __construct(){
  19. echo 'This is a Constructed Method;';
  20. }
  21. //オブジェクトのコピーやクローン作成を防ぐための__cloneメソッドを作成
  22. public function __clone (){
  23. trigger_error('クローンは許可されていません!',E_USER_ERROR);
  24. }

  25. //単一インスタンス メソッド、インスタンスにアクセスするために使用されるパブリック静的メソッド

  26. public static function getInstance( ){
  27. if(!(self::$_instance instanceof self)){
  28. self::$_instance = 新しい self;
  29. }

  30. return self::$_instance;

  31. }< /p>
  32. public function test(){

  33. echo 'メソッドの呼び出しに成功しました';
  34. }
  35. }

  36. // new を使用してプライベート マーク コンストラクターをインスタンス化するクラスはレポートしますエラー

  37. // $danli = new Danli();
  38. //正しい方法は、二重コロン::演算子を使用して静的メソッドにアクセスし、インスタンスを取得することです
  39. $danli = Danli::getInstance();
  40. $ danli->test();
  41. // オブジェクトをコピー (クローン作成) すると E_USER_ERROR が発生します
  42. $danli_clone = clone $danli
  43. ?>

コードをコピー

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