一些 PHP 内置类对其构造函数使用旧的命名方案(即它们的类名)。SoapVar
的构造函数例如是Soapvar::SoapVar()
. 现在我正在尝试扩展该类并覆盖它的构造函数。我必须使用类名来做到这一点,通常__constructor()
不起作用。
非命名空间,使用__constructor()
:
class SomeClass extends SoapVar {
public function __constructor() {
print "Trying to override parent's constructor.\n";
}
}
$class = new SomeClass(); /* Not working */
非命名空间,使用类名作为构造函数:
class SomeClass extends SoapVar {
public function SomeClass() {
print "Trying to override parent's constructor.\n";
}
}
$class = new SomeClass(); /* Working */
现在我需要使用一个命名空间类。唯一的问题是:从 PHP 5.3.3 开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数。所以这:
namespace Example\Namespace;
class SomeClass extends \SoapVar {
public function SomeClass() {
print "Trying to override parent's constructor.\n";
}
}
$class = new SomeClass(); /* Not working */
不工作!有什么办法可以解决这个问题,还是我被迫使用全局命名空间?是否有针对此问题的错误报告?