Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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_Constructor - Fatal编程技术网

Php 在什么情况下构造函数是私有的还是受保护的?

Php 在什么情况下构造函数是私有的还是受保护的?,php,oop,constructor,Php,Oop,Constructor,是否存在这样一种情况,即_construct()将被声明为除公共之外的任何内容 如果是,原因是什么?使构造函数私有或受保护的一个常见示例是实现。 有关PHP示例,请参阅。通常,我们将_construct()作为与设计模式相关的singleton模式的私有构造函数。要了解更多有关它的信息,请访问此页面-在类内部使用时,以及在为类添加时,我也使用私有构造函数 两者都可以帮助您避免创建过多的构造函数,还可以帮助您创建具有有意义名称的构造函数。 例如,而不是: new Robot(2, 4, 255,

是否存在这样一种情况,即_construct()将被声明为除公共之外的任何内容


如果是,原因是什么?

使构造函数私有或受保护的一个常见示例是实现。
有关PHP示例,请参阅。

通常,我们将_construct()作为与设计模式相关的singleton模式的私有构造函数。要了解更多有关它的信息,请访问此页面-

在类内部使用时,以及在为类添加时,我也使用私有构造函数

两者都可以帮助您避免创建过多的构造函数,还可以帮助您创建具有有意义名称的构造函数。 例如,而不是:

new Robot(2, 4, 255, 0, 0)
您可以使用生成器创建:

RobotBuilder.withNumberOfArms(2).withColor(255,0,0).withNumberOfEyes(2).build()
由于生成器位于类内部,因此只有它才能调用其私有构造函数

对于静态工厂方法,您可以看到:

public static Robot createFourArmedRobot();
public static Robot createBlindRobot();
对于其他开发人员来说,比两个具有自定义参数的构造函数更有意义。
(与OOP比php更相关)

这样的设计模式将用于什么?请原谅我的“noob”问题。@DustinL。在其他语言中,它们用于应该只有一个实例的类:资源管理器、缓存、记录器等@Gordon谢谢!我也喜欢流程图!:)