Некоторые встроенные классы PHP используют старую схему именования для своего конструктора (I.E. их имя класса). Например, конструктор SoapVar
- это Soapvar::SoapVar()
. Теперь я пытаюсь расширить этот класс и переопределить его конструктор. Я должен использовать имя класса для этого, обычный __constructor()
не работает.Как переопределить конструктор расширенного класса с классом имен (старомодный конструктор)?
Non-пространство имен, используя __constructor()
:
class SomeClass extends SoapVar {
public function __constructor() {
print "Trying to override parent's constructor.\n";
}
}
$class = new SomeClass(); /* Not working */
Non-пространство имен, используя имя класса в качестве конструктора:
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 */
не работает! Есть ли способ решить эту проблему или я вынужден использовать глобальное пространство имен? Есть ли сообщение об ошибке для этой проблемы?