PHP5中的PHP4构造函数命名约定
除了“您不必更改名称”之外,保留PHP4样式的构造函数名称是否存在任何实际问题:PHP5中的PHP4构造函数命名约定,php,oop,Php,Oop,除了“您不必更改名称”之外,保留PHP4样式的构造函数名称是否存在任何实际问题: ClassName($args) 在PHP5中?否。除此之外,它是丑陋的ish(imo),并删除了一个可能的函数名^^ 没有。除此之外,它还很丑陋(imo),并删除了一个可能的函数名^^ ,这是唯一的缺点。,这是唯一的缺点。对于PHP5,保留它没有问题。但是,如果类有一个_construct()函数,则会调用它。对于PHP5,保留它没有问题。但是,如果该类有一个_construct()函数,则将调用它。因为命名构
ClassName($args)
在PHP5中?否。除此之外,它是丑陋的ish(imo),并删除了一个可能的函数名^^ 没有。除此之外,它还很丑陋(imo),并删除了一个可能的函数名^^ ,这是唯一的缺点。,这是唯一的缺点。对于PHP5,保留它没有问题。但是,如果类有一个_construct()函数,则会调用它。对于PHP5,保留它没有问题。但是,如果该类有一个_construct()函数,则将调用它。因为命名构造函数仅保留在PHP5中用于与PHP4向后兼容,因此它们在以后的PHP版本中比
_construct()
更可能被弃用,因此,如果您正在编写一些希望延长使用寿命的内容,那么必须记住这一点。因为命名构造函数仅保留在PHP5中用于与PHP4向后兼容,因此在以后的PHP版本中,它们比\uu construct()
更可能被弃用,因此,如果你在写一些你想要长寿的东西,那就要记住这一点。如果你使用老式的构造函数名称,你会在这样的情况下产生一些混乱
class A
{
public function A()
{
}
}
class B extends A
{
public function B()
{
//how do/should I call the parent constructor?
//parent::A(); ?
//parent::__construct(); ?
}
}
如果有人看到旧式构造函数并将其切换到较不旧式的构造函数,则可能会导致功能中断。此外,如果您必须改变对象继承权,以便B扩展不同的类,则需要手动更改对
parent::a()
的所有调用,或者不熟悉“构造函数是具有类名的方法”构造的人(指在过去5年中学习过PHP的人)可能不知道该怎么做,就会发生微妙的断裂 如果您使用老式的构造函数名称,您会在这种情况下造成一些混乱
class A
{
public function A()
{
}
}
class B extends A
{
public function B()
{
//how do/should I call the parent constructor?
//parent::A(); ?
//parent::__construct(); ?
}
}
如果有人看到旧式构造函数并将其切换到较不旧式的构造函数,则可能会导致功能中断。此外,如果您必须改变对象继承权,以便B扩展不同的类,则需要手动更改对
parent::a()
的所有调用,或者不熟悉“构造函数是具有类名的方法”构造的人(指在过去5年中学习过PHP的人)可能不知道该怎么做,就会发生微妙的断裂 在PHP4中,oop更像是一种黑客行为,这里有一段代码是为PHP5风格的构造函数截取的,但它与PHP4兼容
class Object
{
function Object()
{
$args= func_get_args();
call_user_func_array
(
array(&$this, '__construct'),
$args
);
}
function __construct()
{
// Abstrakt Funktion
}
}
在PHP4中,oop更像是一种黑客行为,这里有一个PHP5风格的构造函数代码,但它与PHP4兼容
class Object
{
function Object()
{
$args= func_get_args();
call_user_func_array
(
array(&$this, '__construct'),
$args
);
}
function __construct()
{
// Abstrakt Funktion
}
}
PHP5的目标之一是增加一致性。PHP正朝着让引擎自动调用前缀为_x的代码的方向发展。我们通过新的类选项uu-construct、destruct、call、get、set、sleep等看到了这一点。我们也通过u-autoload看到了这一点。当您使用PHP4样式的构造函数时,使用parent::_construct()也会起作用,这可能会有点混乱。PHP正朝着让引擎自动调用前缀为_x的代码的方向发展。我们通过新的类选项uu-construct、destruct、call、get、set、sleep等看到了这一点。我们也通过u-autoload看到了这一点。当您使用PHP4样式的构造函数时,使用parent::_construct()也可以工作,这可能会有点混乱。