如何防止PHP考虑使用类名相同的函数、构造函数

如何防止PHP考虑使用类名相同的函数、构造函数,php,constructor,Php,Constructor,在PHP5.3.3之前 class Same { public function same() { echo 'Not good'; } } $c = new Same(); 会输出不好。 从5.3.3+开始,它将不输出字符串。这是因为在PHP5.3.3中,具有相同类名的函数不被视为构造函数。 即使使用PHP 5.3.2或更早版本,如何强制执行此行为?最简单的方法可能只是创建一个空构造函数: class Same { public function same() { ech

在PHP5.3.3之前

class Same {
    public function same() { echo 'Not good'; } 
}

$c = new Same();
会输出不好。 从5.3.3+开始,它将不输出字符串。这是因为在PHP5.3.3中,具有相同类名的函数不被视为构造函数。
即使使用PHP 5.3.2或更早版本,如何强制执行此行为?

最简单的方法可能只是创建一个空构造函数:

class Same {
    public function same() { echo 'Not good'; } 

    public function __construct() { }
}

$c = new Same();

这并不好,因为构造方法重写了与类方法相同的名称。

最简单的方法可能只是创建一个空构造函数:

class Same {
    public function same() { echo 'Not good'; } 

    public function __construct() { }
}

$c = new Same();

这不符合要求,因为u构造方法重写了与类方法相同的名称。

构造方法名为u构造。如果您希望使用相同的名称,只需在_构造中调用相同的方法即可。
据介绍,php试图保留向后兼容性。在我看来,相同的名称意味着将方法名写为区分大小写的类名。这应该也行。

构造方法名为uu-construct。如果您希望使用相同的名称,只需在_构造中调用相同的方法即可。 据介绍,php试图保留向后兼容性。在我看来,相同的名称意味着将方法名写为区分大小写的类名。这也应该行得通

为了向后兼容,如果PHP5找不到给定类的_构造函数,它将根据类的名称搜索旧式构造函数。实际上,这意味着唯一存在兼容性问题的情况是,如果类有一个名为_construct的方法,该方法用于不同的语义

与其他方法不同,当_构造被不同于父_构造方法的参数覆盖时,PHP不会生成E_严格级别的错误消息

从PHP5.3.3开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数。此更改不会影响非命名空间的类

文件:-

所以显而易见的解决方案是声明一个_构造函数方法,即使它是空的

为了向后兼容,如果PHP5找不到给定类的_构造函数,它将根据类的名称搜索旧式构造函数。实际上,这意味着唯一存在兼容性问题的情况是,如果类有一个名为_construct的方法,该方法用于不同的语义

与其他方法不同,当_构造被不同于父_构造方法的参数覆盖时,PHP不会生成E_严格级别的错误消息

从PHP5.3.3开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数。此更改不会影响非命名空间的类

文件:-


所以显而易见的解决方案是声明一个_构造函数方法,即使它是一个空的

?也许我错了,相同的方法不是构造函数,手册中解释过,就在PHP5.3.3之前注:嗯?也许我错了,方法same不是构造函数它在手册中解释过,就在PHP5.3.3之前注:是的,它仍然是一个有效的方法。是的,它仍然是一个有效的方法。