是否会出现__construct()除了公开之外被宣布的情况?
如果是这样,为什么?
答案 0 :(得分:1)
使构造函数成为私有或受保护的常见示例是实现singleton pattern。 有关PHP示例,请参阅this answer。
答案 1 :(得分:1)
在类中使用builder pattern时,以及为类添加static factory methods时,我也使用私有构造函数。
两者都可以帮助您避免创建太多构造函数,还可以帮助您创建具有有意义名称的构造函数。 例如,而不是:
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)
答案 2 :(得分:0)
通常我们将__construct()作为私有的单身模式与设计模式相关,以了解更多信息,请访问此页面 - http://en.wikipedia.org/wiki/Singleton_pattern