除了“您不必更改名称”之外,保留PHP4样式构造函数名称是否存在任何实际问题:
ClassName($args)
在PHP5中?
答案 0 :(得分:9)
因为命名构造函数仅保留在PHP5中以便与PHP4向后兼容,所以它们更有可能在PHP的后续版本中被弃用,而不是__construct()
,所以如果你正在编写,那就要记住了你打算长寿的东西。
答案 1 :(得分:6)
如果您使用旧样式的构造函数名称,那么就会对这种情况造成一些混淆
class A
{
public function A()
{
}
}
class B extends A
{
public function B()
{
//how do/should I call the parent constructor?
//parent::A(); ?
//parent::__construct(); ?
}
}
如果有人看到旧样式构造函数并将其切换为较旧的样式构造函数,则可能会破坏功能。此外,如果你必须处理你的对象heirarchy以便B扩展另一个类,你需要手动更改所有对parent::A()
的调用,或者不熟悉“构造函数是一个带有类名的方法”构造的人(意味着在过去的5年里学过PHP的人)可能不知道这样做,并且会发生微妙的破坏。
答案 2 :(得分:3)
对于PHP5,保留它没有问题。但是,如果该类具有__construct()函数,则会调用它。
答案 3 :(得分:1)
According to the documentation,这是唯一的缺点。
答案 4 :(得分:0)
没有。除此之外,它是丑陋的(imo)并带走了一个可能的函数名称。 ^^
答案 5 :(得分:0)
在php 4 oop中,其他所有内容都是一个hack,它是一个代码剪切为php 5风格的构造函数,但它兼容php 4
class Object
{
function Object()
{
$args= func_get_args();
call_user_func_array
(
array(&$this, '__construct'),
$args
);
}
function __construct()
{
// Abstrakt Funktion
}
}