PHP单例模式设计方法

更新时间:2019-10-19 17:01:24 来源:青锋建站 作者:青锋建站
  在一个PHP项目中,如果一个类的对象实例在整个程序运行过程中只需创建一个,就足以完成该类的设计目标,则可以将这个类设计为单例类。以避免多次创建所带来的系统额外开销。在一些框架类或CMS中我们经常见到把一些类设计为单例模式,来节省系统开销,防止重复创建实例。以下是青锋建站给大家分享的PHP单例模式的设计方法。

PHP单例模式设计方法

1、定义一个私有化的静态属性;
2、私有化构造函数,不让外界通过new关键字来实例化对象;
3、提供一个公开的静态方法,只让外界通过这个函数来实例化对象;
4、当对一个对象进行clone操作时,会自动调用类中的__clone()这个魔术方法,我们可以利用这一点来禁止克隆。就像我们禁止new一个类一样。修正方法,私有化__clone方法。
  以下是示例代码
class phpSingle
{
    private static $instance=NULL;//定义一个私有化的静态属性;
    private function __struct()//私有化构造函数
   {
    }
   private function __clone()//私有化__clone()这个魔术方法
   {
   }
    public static function getinstance()//实例化对象函数
   {
        if(empty(self::$instance))
        {
            self::$instance=new self();
            return self::$instance;
         }
        else
       {
            return self::$instance;
       }
   }
}
使用方法
$a=phpFactory::getinstance(');

PHP单例工厂模式设计方法

PHP工厂模式
  所谓工厂模式,其实就是设计这样一个类(工厂类F),该类可以接收一个“参数”,该参数代表某个类名(比如B),然后,这个类F就可以“生产”出所传过来的这个类名(B)对应的对象。使用PHP工厂模式可以实例化无数个单例类,设计一个单例工厂类只需要把上面的单例类稍微改变一下就可以实现。PHP单例类只能保证当前类是单例模式,而工厂模式可以保证所有的类是单例。我们把让这个PHP工厂类接收一个类名(假设这个类和工厂类在同一目录,实际中这个类名是带有完整路径的类名)。

class phpFactory
{
    private static $instance=array();//定义一个私有化的静态属性,由于是工厂模式,这里把静态属性设置为数据模式;
    private function __struct()//私有化构造函数
   {
    }
   private function __clone()//私有化__clone()这个魔术方法
   {
   }
    public static function getinstance($classname)//生产单例对象
   {
        if(empty(self::$instance[$classname]))
        {
            self::$instance[$classname]=new $classname;
            return self::$instance[$instance];
         }
        else
       {
            return self::$instance[$instance];
       }
   }
}
使用方法
$a=phpFactory::getinstance('classname');
  以上就是青锋建站给大家分享的PHP单例模式设计方法与单例工厂类设计方法,青锋建站专业致力于php网站建设开发,软件开发,网络营销。青锋建站,提供专业的高品质网站制作服务,包括网站建设,SEO,网络营销,PHP开发,网站建设知名品牌,全国接单,为企业构建强有力的营销平台。

转载请注明来源网址:青锋建站-http://www.sjzphp.com/webdis/php_instance_817.html

电话 15632335515 | 邮箱 943703539@qq.com | QQ 943703539 | 微信 qingfengjianzhan

Copyright © 2016-2026 青锋建站 版权所有