0

一些 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 */

不工作!有什么办法可以解决这个问题,还是我被迫使用全局命名空间?是否有针对此问题的错误报告?

4

1 回答 1

1

掌心

应该使用__construct()而不是__constructor()

于 2013-09-26T15:20:30.113 回答