一些PHP内置类使用旧的命名方案作为其构造函数(I.E.他们的类名)。例如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 */
现在我需要使用命名空间类。唯一的问题是:As of PHP 5.3.3, methods with the same name as the last element of a namespaced class name will no longer be treated as constructor.所以这个:
namespace Example\Namespace;
class SomeClass extends \SoapVar {
public function SomeClass() {
print "Trying to override parent's constructor.\n";
}
}
$class = new SomeClass(); /* Not working */
不起作用!有没有办法解决这个问题,还是我被迫使用全局命名空间?是否有针对此问题的错误报告?
答案 0 :(得分:1)
<强>捂脸强>
应该使用__construct()
而不是__constructor()