php中的单例模式

php中的单例模式,第1张

概述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教程 总结

以上是内存溢出为你收集整理的php中的单例模式全部内容,希望文章能够帮你解决php中的单例模式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1012135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存