Инициализируйте переменную ComplexType внутри класса (SoapClient) - PullRequest
0 голосов
/ 04 декабря 2010

Привет всем, я пытаюсь использовать WebService с использованием PHP SoapClient. Теперь все работает нормально, пока я не попытаюсь использовать переменную ComplexType. Я получаю NullPointerException от веб-службы.

Вот пример класса переменной ComplexType:

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

Теперь я создаю объект, подобный этому:

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

Но это нужно делать каждый раз, когда я делаю объект А. Есть ли способ инициализации $var2 в class A, без использования конструкторов для него, как мы делаем для $var1?

1 Ответ

1 голос
/ 04 декабря 2010

Да, возможно при использовании PHP с перегрузкой

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

...