在类(SoapClient)中初始化ComplexType变量

时间:2010-12-04 14:07:12

标签: php soap soap-client

大家好,我正在尝试使用PHP SoapClient来使用WebService。 现在,一切正常,直到我尝试使用ComplexType变量。 我从网络服务中获得NullPointerException

以下是ComplexType变量的类:

class A {
public $var1 = 0; //int
public $var2; //Object: B
}

现在,我正在制作一个这样的对象:

$a = new A();
$a->var2 = new B();

但是,每次我制作A的对象时都必须这样做。 有没有一种方法可以在$var2中初始化class A,而不使用构造函数,就像我们为$var1做的那样?

1 个答案:

答案 0 :(得分:1)

是的,如果使用PHP overloading

,则可以
class A
{
  public $var1 = 0;
  /* note $var2 cannot declare here */

  public function __get($name)
  {
    switch ($name)
    {
      case 'var2':
        return new B();
        break;
    }
  }
}

class B
{
  public $var3 = 1;
  public function __construct()
  {
    $this->name = 'this is class b';
  }
}

$a = new A();
var_dump( $a->var2 );
var_dump( $a->var2->var3 );
var_dump( $a->var2->name );

使用$a->var2代替$a->$var2

进行调用