2010-12-04 6 views
0

Salut tout le monde, j'essaie de consommer un WebService en utilisant PHP SoapClient. Maintenant, tout fonctionne correctement jusqu'à ce que j'essaie d'utiliser une variable ComplexType. Je reçois un NullPointerException du service Web.Initialiser une variable ComplexType dans une classe (SoapClient)

Voici la classe d'un exemple de variable ComplexType:

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

Maintenant, je fais un objet comme celui-ci:

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

Mais, cela doit être fait chaque fois que je fais un objet de A. Y at-il une méthode pour initialiser $var2 dans class A, sans utiliser les constructeurs pour cela, comme nous le faisons pour $var1?

Répondre

1

Oui, il est possible si vous utilisez 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); 

est appelé en utilisant $a->var2 au lieu de $a->$var2

+0

. merci pour cette solution. fonctionne à merveille. et aussi pour pointer cette erreur dans mon code ..: P – Stoic

Questions connexes