首页 / 知识
关于php:在PHP5类中,何时调用私有构造函数?
2023-04-13 02:51:00

In a PHP5 class, when does a private constructor get called?假设我正在编写一个php(>=5.0)类,该类应该是单例的。我读过的所有文档都说要将类构造函数设为私有的,这样类就不能直接实例化。 所以如果我有这样的东西:
是否有任何情况下调用了u construct(),除了如果我正在执行
在类内部调用? 为什么我可以从内部实例化sillydb? 只有从包含私有构造函数的类的方法中调用
之所以能够/希望从内部实例化类,是因为可以检查以确保在任何给定时间只存在一个实例。毕竟,这是单身汉的全部观点。使用singleton进行数据库连接可确保应用程序一次不进行大量的DB连接。 编辑:按照@emanuele del grande的建议添加了美元 下面是一个非常简单的单例,它只生成日期/时间字符串:
做这样的事情显然会让我一次又一次的约会:
这样做不会产生任何错误:
好吧,我自己做了一些测试。
测试代码,马克,让我知道你发现了什么。 编辑:另外,在这种特定的情况下,我不知道为什么您需要考虑阻止一个人进行子类化。如果有人可以访问您的PHP代码来对其进行子类化,那么他们也可以访问您的代码来复制它,并将访问修饰符更改为他们(出于任何原因)认为合适的内容。 在这种情况下,singleton的实际用途是,通过使用它,可以确保对给定的HTTP请求始终使用相同的数据库连接。它实现了这一点。从理论的角度来看,其他的东西(使用 有点吹毛求疵:为了完整性,您可能也会声明该类是最终的,因为您不希望有人子类化该类并实现它自己的公共构造函数。 (如果编译器捕获了私有构造函数的重写,请原谅我,但我认为它没有捕获到。) |
最新内容
相关内容
python的调用绑定方法和非绑定方法
python的调用绑定方法和非绑定方法,代码,方法,实例,第一,培训,时计,奇数,偶数,参数,定义,在Python中,如果用实例去调用方法,这种限制就被称为Pypython如何调用另一个文件夹中的内
python如何调用另一个文件夹中的内容?,系统,培训,文件,模块,内容,路径,函数,所在,前缀,语句,python中调用另外一个文件夹中的内容:1、同一文件python怎么判断文档是否有指定后缀
python怎么判断文档是否有指定后缀?,培训,后缀,文档,文件夹,路径,以上,文件,方法,更多,内容,python判断文档是否有指定后缀的方法:importosYoupython无法调用cv2怎么解决
python无法调用cv2怎么解决,时报,培训,参数,终端,新版,以上,两个,更多,内容,python调用cv2.findContours时报错:ValueError:notenoughvaluest怎么查看python文档
怎么查看python文档,信息,在线,培训,文档,模块,对象,基本功,时会,程序员,函数,查看文档是一个程序员的基本功,这里简单介绍几种查看Python文档python怎么调用方法
python怎么调用方法,系统,培训,方法,参数,法名,定义,列表,实例,以上,函数,python调用的方法类的方法的定义1、定义一个类deffun_name(self,..python如何函数调用
python如何函数调用,函数,画线,较大,合法,培训,定义,变量,语句,单词,语法,函数定义和调用在使用函数之前必须先定义函数,定义函数的语法格式如python调用方法必须实例化么
python调用方法必须实例化么,代码,培训,方法,静态,工厂,参数,程序,对象,实例,定义,python类中的实例方法和静态方法,在调用时,是有区别的。静态python怎么调用class
python怎么调用class,培训,方法,实例,静态,参数,定义,关键字,以上,更多,内容,python类方法和静态方法都可以被类和类实例调用,类实例方法仅可python调用本类方法
python调用本类方法,培训,方法,定义,静态,实例,关键字,以上,更多,内容,python如何调用本类方法要想调用类中的方法,首先要定义一个类,python中python如何实例化一个对象
python如何实例化一个对象,培训,名称,实例,括号,关键字,对象,函数,字母,方式,以上,python中同样使用关键字class创建一个类,类名称第一个字母python如何在cmd调用程序
python如何在cmd调用程序,代码,培训,路径,空格,文件,程序,下面,以上,目录,更多,我们在编写python代码时,可以在交互模式下运行代码,也可以用编