目前,PHP支持构造函数的两个命名约定。 PHP 4支持Java风格的构造函数:
class A
{
public function A()
{
echo "I'm a constructor for class A!";
}
}
PHP 5支持Java风格的构造函数和“魔术方法”语法:
class A
{
public function __construct()
{
echo "I'm a constructor for class A!";
}
}
Java风格的语法定于弃用,some features of it don't work in the latest PHP。但是,它有一个有趣的属性,我知道与“魔术方法”语法不相似。如果派生类foobar
没有显式构造函数,则基类的foobar
方法将成为foobar
构造函数:
class A
{
public function A()
{
echo "I'm a constructor for class A!";
}
public function B()
{
echo "I'm a constructor for class B!";
}
}
class B extends A
{
}
由于Java风格的构造函数已被弃用,那么将在母语中设置构造函数的功能会怎样?
答案 0 :(得分:2)
对于PHP 4,你可能已经学会了这个here。
正如您所知,在PHP 5文档(here)中,声明如果没有使用或继承__construct(),旧语法将作为后备启动:
为了向后兼容,如果PHP 5找不到给定类的__construct()函数,并且该类没有从父类继承,它将搜索旧式构造函数,其名称为类。实际上,这意味着唯一具有兼容性问题的情况是该类是否有一个名为__construct()的方法,该方法用于不同的语义。
所以旧的语法应该仍然有效,如PHP 5.4.11。即使可以预见,目前也没有明确的弃用计划。
无论如何,当它们(以及它们)被删除时,此功能也将被删除,因为无法使用__construct()语法重现它。
答案 1 :(得分:0)
您现在正在使用什么PHP安装?
如果您安装了PHP 5:
如果要创建新课程,请使用新样式。 如果您已经拥有以前风格的课程,他们仍然可以工作, 但是,当你可以的时候更新它们很好。
如果您安装了PHP 4:
Yopu必须使用以前的风格。如果您稍后更改为PHP 5, 他们也工作。干杯。