Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [résolu] SoapFault exception: [SOAP-ENV:Server] Call to a member function loadmodule() on a non-object

Posted by mlmic on 09/14/2011 18:45

Bonjour à tous !

je suis en train de mettre en place un webservice avec jelix 1.3RC. Dans la classe contrôleur serveur jelix. j'ai mis en place deux fonctions qui extraient les informations d'une autre application avec succès. la procédure est la suivante : l'application où les données sont extraites étant sur la même machine que mon application jelix, Dans mon serveur jelix (web service), j'ai inclu les classes correspondantes contenant les fonctions où les données sont extraites et les résultats sont corrects.

par contre j'ai inclu une 3e classe qui dans son constructeur charge certaines modules de la librairie PEAR. voici le code

public function __construct($db)
{
<code>
    global  $db;
    $this->db = $db;
    $this->db->loadModule('extended');			
    $this->inid = $inid;

}

</code>

$db = variable qui contient la chaîne de connexion j'ai cette erreur qui se produit :

SoapFault exception: [[SOAP-ENV:Server]] Call to a member function loadmodule() on a non-object 

dans les autres cas qui fonctionnent je n'ai pas cette ligne

$this->db->loadModule('extended');

dans mon constructeur. je fais bien un require_once ("MDB2.php") et tous les autres fichiers dépendants sont accessibles. suivant le message d'erreur, on dirait que j'appelle cette méthode sur une variable qui n'est pas un objet, pourtant j'ai bien créé une instance de la classe dans mon serveur jelix ainsi :

$maclasse = new nomclasse ($db);

la variable $db est bien renseignée et la chaîne de connexion est correcte.

 

Quelqu'un a t il une idée SVP !

  [Opened] SoapFault exception: [SOAP-ENV:Server] Call to a member function loadmodule() on a non-object

Reply #1 Posted by mlmic on 09/15/2011 13:13

Bonjour à tous.

j'ai trouvé la source de l'erreur et je l'ai corrigé. effet dans le constructeur de la classe, on passait la variable $db comme paramètre à la fonction et à l'intérieur de la fonction, on avait encore déclaré global $db et comme dans mon cas je n'exécutais pas les process qui renseigne cette variable, elle était toujours vide. ce parce que la portée de la variable déclarée global est plus élévée que celle de la variable passée en paramètre à la fonction.

Pour corrigé j'ai juste supprimé la déclaration global $db à l'intérieur du constructeur.

 
Page
  1. [résolu] SoapFault exception: [SOAP-ENV:Server] Call to a member function loadmodule() on a non-object