Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用单例_Php_Oop_Class_Singleton - Fatal编程技术网

在PHP中使用单例

在PHP中使用单例,php,oop,class,singleton,Php,Oop,Class,Singleton,我想在一个类的几个方法中使用我创建的DB Singleton。在每个方法中单独实例化Singleton更合适,还是通过_构造函数()实例化它并从每个方法中的变量访问它更合适 谢谢。单例是不是每次实例化类时都会用到它?或者它只是偶尔用于不总是被调用的方法?如果是前者,那么在构造函数中执行它可能更简单;如果是后者,那么效率将建议只在每个方法中按需实例化它(这是假设初始单例创建的开销很大-如果不是,只需在构造函数中进行,并为自己节省一些麻烦)。考虑到它是单例,结果是一样的:DB对象只有一个实例,并且始

我想在一个类的几个方法中使用我创建的DB Singleton。在每个方法中单独实例化Singleton更合适,还是通过_构造函数()实例化它并从每个方法中的变量访问它更合适


谢谢。

单例是不是每次实例化类时都会用到它?或者它只是偶尔用于不总是被调用的方法?如果是前者,那么在构造函数中执行它可能更简单;如果是后者,那么效率将建议只在每个方法中按需实例化它(这是假设初始单例创建的开销很大-如果不是,只需在构造函数中进行,并为自己节省一些麻烦)。

考虑到它是单例,结果是一样的:DB对象只有一个实例,并且始终是一样的

因此,两种解决方案都会起作用,并产生相同的结果;至少,如果每次创建类的实例时都使用DB类——当然,性能差异可能可以忽略不计


尽管如此,在构造函数中获取单例实例并在其他方法中使用类变量的解决方案仍然有一个优势:您的方法将不依赖于此单例,而只依赖于类变量

。。。这意味着,如果您希望有一天使用它(例如,为了自动化测试的目的,“模拟”您的DB类),那么这将更加容易(您只需修改
\u构造
方法,而不是类的每个方法)


有关更多信息,您可以查看这篇博文:

如果它是一个单实例,那么它不应该每次都能创建一个新实例。感谢您提供了如此详细的答案:)