> 백엔드 개발 > PHP 튜토리얼 > PHP 디자인 패턴 싱글턴 패턴 알아보기

PHP 디자인 패턴 싱글턴 패턴 알아보기

WBOY
풀어 주다: 2016-07-25 09:05:17
원래의
791명이 탐색했습니다.
  1. /**

  2. * php设计模式之单例模式
  3. * $_instance必须声明为静态的私有变量
  4. * 构造函数和析构函数必须声明为私有,防止外部程序new
  5. * 类从而失去单例模式的意义
  6. * getInstance()方法必须设置为公有的,必须调用此方法
  7. * 以返回实例的一个引用
  8. * ::操作符只能访问静态变量和静态函数
  9. * new对象都会消耗内存
  10. * 使用场景:最常用的地方是数据库连接。
  11. * 使用单例模式生成一个对象后,
  12. * 该对象可以被其它众多对象所使用。
  13. * @link http://bbs.it-home.org
  14. */

  15. class Danli {

  16. //保存类实例的静态成员变量
  17. private static $_instance;
  18. //private标记的构造方法
  19. private function __construct(){
  20. echo 'This is a Constructed method;';
  21. }
  22. //创建__clone方法防止对象被复制克隆
  23. public function __clone(){
  24. trigger_error('Clone is not allow!',E_USER_ERROR);
  25. }

  26. //单例方法,用于访问实例的公共的静态方法

  27. public static function getInstance(){
  28. if(!(self::$_instance instanceof self)){
  29. self::$_instance = new self;
  30. }

  31. return self::$_instance;

  32. }

  33. public function test(){

  34. echo '调用方法成功';
  35. }
  36. }

  37. //用new实例化private标记构造函数的类会报错

  38. //$danli = new Danli();
  39. //正确方法,用双冒号::操作符访问静态方法获取实例
  40. $danli = Danli::getInstance();
  41. $danli->test();
  42. //复制(克隆)对象将导致一个E_USER_ERROR
  43. $danli_clone = clone $danli;
  44. ?>

复制代码


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿