php中单例模式

发布时间:2021-03-03 09:29:13 作者:清风
来源:亿速云 阅读:134

这篇文章主要为大家展示了php中单例模式,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“php中单例模式”这篇文章吧。

php有什么用

php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因为php是开源的,从而使得php经久不衰。

1.单例模式的由来

 是对现实生活中一类具有共同特征的事物的抽象,通过类的实例化,产生了许多的对象,但同时也产生了大量资源的消耗(例如在连接数据库时连接数量的限制,又例如在计算机中打开资源管理器却具有唯一性),由此也产生了对类的实例化进行了限定的需求,为了保护资源的唯一性,由此产生了单例模式

2.单例模式的定义

定义:单例模式singleton,是一种类的设计只会最多产生一个对象的设计思想。

3.单例模式的实例

   a.创建一个空类 。

<?php
   class Use{
   }
   $a=new Use();//实例化一个对象
?>

b.能够多次实例化类,是产生多个对象的原因,所以可以通过私有化构造方法

<?php
  class Use{
    private function __construct()
    {
      echo __FUNCTION__."<br>";
    }
   }
?>

c.私有化构造方法使得实例化对象产生的数目为0,由此可以通过在类的内部,通过静态方法调用构造方法,然后将构造方法返回至外部。

<?php
  class Use{
    private function __construct()
    {
     echo __FUNCTION__."<br>";
    }
    public static function getInstance()
    {
      return new self();
        }
   }
  $s1=Use::getSingleton();
?>

d.通过上述的方法虽然能够实例化对象,但是同时也将构造方法的使用权限外放出去。如果想要该方法只返回一个对象,就得保证类内部有办法存着某个产生的对象,第一次产生新的,后面返回旧的。此时需要使用静态属性。

<?php
  class Use{
    private static $object = NULL;//初始化为NULL,没有对象 
    
    private function __construct()
    {
      echo __FUNCTION__."<br>";
    }
    
    public static function getInstance()
    {  
      //判断类内部的静态属性是否存在对象
       if(!(self::$object instanceof self)){   //当前保存的内容不是当前类的对象
       self::$object = new self();
    }
      //返回对象给外部
       return self::$object;
    }
   }
  $s1=Use::getSingleton();
?>

e.此时可以保证,通过调用静态方法只得到一个对象。但是依旧可以通过克隆,不停的实例化新的对象,所以可以将克隆私有化。

<?php
  class Use{
    private static $object = NULL;//初始化为NULL,没有对象 
    
    private function __construct()
    {
      echo __FUNCTION__."<br>";
    }
    
    public static function getInstance()
    {  
      //判断类内部的静态属性是否存在对象
       if(!(self::$object instanceof self)){   //当前保存的内容不是当前类的对象
           self::$object = new self();
       }
      //返回对象给外部
       return self::$object;
    }
    
    
    private function __clone(){}   
   }
  $s1=Use::getSingleton();
?>

以上就是关于“php中单例模式”的内容,如果改文章对你有所帮助并觉得写得不错,劳请分享给你的好友一起学习新知识,若想了解更多相关知识内容,请多多关注亿速云行业资讯频道。

推荐阅读:
  1. PHP 单例模式
  2. 如何实现php单例模式?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php 单例模式

上一篇:CSS的伪类选择器是什么

下一篇:pycharm如何汉化

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》