在 PHP 的面向对象编程中,我们经常会用到构造函数__construct()
来初始化一个类的实例对象。同时,有时候我们也会看到_ _construct()
这样的写法,其中的前下划线是双的_ _
。这里提供一个完整的攻略来讲解这个问题。
为什么使用前下划线双的__construct()
?
在 PHP 中,前下划线双的__construct()
是一个魔术方法(或者称之为魔术函数)。魔术方法是指,在某种情况下会自动调用的函数,这种情况往往是与类有关的,比如类的创建、销毁等。在 PHP 中,双下划线开头的函数名都是魔术方法。
而单下划线开头的函数名通常被认为是私有方法,表示只能在类内部调用。因此,我们在定义构造函数时如果使用单下划线开头的函数名,会让人感到困惑,可能会误认为该函数是私有方法,不能在类外被调用。
而使用双下划线开头的函数名,可以明确地表示这是一个魔术方法,可以在类外被调用,而且也不会与其他方法名称冲突。
__construct()
和_ _construct()
的比较
下面来看两个示例,分别使用__construct()
和_ _construct()
来定义类的构造函数:
// 使用__construct()定义构造函数
class MyClass {
public function __construct() {
echo "This is constructor of MyClass.";
}
}
$obj1 = new MyClass(); // 输出 "This is constructor of MyClass."
// 使用_ _construct()定义构造函数
class MyClass {
public function _ _construct() {
echo "This is constructor of MyClass.";
}
}
$obj2 = new MyClass(); // 输出 "This is constructor of MyClass."
可以看到,无论是使用__construct()
还是_ _construct()
,都可以成功地定义构造函数,并在创建对象实例的时候被自动调用。
不过建议在实际开发中使用双下划线开头的__construct()
,以避免与其他方法的命名冲突,并明确表示这是一个魔术方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Php 构造函数construct的前下划线是双的_ - Python技术站