Pour mon boulot, j’ai besoin de mettre un objet en session qui contient lui-même un objet SoapClient. le problème, c’est que sur la page suivante, la connexion au serveur SOAP est coupée. Il faut reconnecter le client à la main… c’est un peu casse pied.
Du coup, j’ai étendu la classe SoapClient pour que ca se reconnecte automatiquement et ca donne:
class SoapClientSessionnable extends SoapClient { private $wsdl; private $options; public function __construct($wsdl, $options = array()) { $this->wsdl = $wsdl; $this->options = $options; parent::__construct($wsdl, $options); } public function __wakeup() { $this->__construct($this->wsdl, $this->options); } }
Bon, c’est un peu crade de rappeler le constructeur, mais je n’ai trouvé aucune méthode qui connecte le client SOAP… et puis ca a le mérite de fonctionner :)
Du coup, ca s’utilise de la même façon que le client SOAP de base:
$client = new SoapClientSessionnable( 'http://host.com/path/to/wsdl', array( // Options 'trace' => 1, 'soap_version' => SOAP_1_1, .... ) );
Pensez quand même à mettre $client en session pour qu’il soit réutilisable dans la page suivante :)
Subversion
Et oui, je passe une petite annonce.
Moi qui ne jurais que sur le