0
一些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 */
不行!有沒有辦法解決這個問題,還是我被迫使用全局命名空間?這個問題有沒有錯誤報告?