我刚刚开始尝试使用 OO PHP,但是有一个基本原理我不太了解,也没有找到太多关于它的信息。
当创建一个__construct()
方法时,你为什么希望它是public
,当它专门为该类构造一个构造函数时?你什么时候想在类外调用构造函数?
对我来说,使用受保护的构造函数似乎是一种好习惯,对吧?
我知道这是基本的面向对象的东西,但我没有直接找到任何信息,特别是针对构造函数。
我刚刚开始尝试使用 OO PHP,但是有一个基本原理我不太了解,也没有找到太多关于它的信息。
当创建一个__construct()
方法时,你为什么希望它是public
,当它专门为该类构造一个构造函数时?你什么时候想在类外调用构造函数?
对我来说,使用受保护的构造函数似乎是一种好习惯,对吧?
我知道这是基本的面向对象的东西,但我没有直接找到任何信息,特别是针对构造函数。
( __construct
not "__constructor") 方法是在您这样做时调用的方法new MyClass()
,即在您实例化类时。构造函数必须是public
,除非您只想从自身内部实例化类。如果是后者,您至少需要一个public static
可以调用的其他方法,该类将在其中实例化自身,否则您无法创建它的任何实例。
每当您创建一个类的新实例时,都会调用构造函数。如果构造函数不是公共的,则没有其他代码可以创建该类的实例。
因此,如果要创建类的实例,请将构造函数公开。
构造函数始终只是定义它的类的一部分,我不明白您所说的“当它专门是该类的构造函数时”是什么意思。
澄清:
调用构造函数的唯一方法是使用new Class()
. 没有其他方法可以调用它。__construct
是一种魔术方法,没有办法显式调用魔术方法。