Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-10-2008 15:41:41

thomasb
Membre
Date d'inscription: 26-05-2008
Messages: 30

Zend_Soap et modele MVC patch de AutoDiscover.php

http://www.osteraker.fi/blog/?tag=zend-framework

Cela pourrait etre utile à certains smile

Hors ligne

 

#2 20-10-2008 16:32:24

ichevc02
Membre
Date d'inscription: 25-07-2007
Messages: 127

Re: Zend_Soap et modele MVC patch de AutoDiscover.php

Bonjour,

juste une remarque sur Autodiscover :
Zend_soap_Autodiscover est n'est pas tres bien faite de toute facon :

la methode set class cree un Zend_Uri avec en dur "http://$_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']"
pas terrible.

Code:

public function setClass($class, $namespace = '', $argv = null)
    {
        $uri = Zend_Uri::factory('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']);

        $wsdl = new Zend_Soap_Wsdl($class, $uri, $this->_extractComplexTypes);
        
        $port = $wsdl->addPortType($class . 'Port');
        $binding = $wsdl->addBinding($class . 'Binding', 'tns:' .$class. 'Port');
        
        $wsdl->addSoapBinding($binding, 'rpc');
        $wsdl->addService($class . 'Service', $class . 'Port', 'tns:' . $class . 'Binding', $uri);
        foreach ($this->_reflection->reflectClass($class)->getMethods() as $method) {

 .....

si on veut faire de l'https par exemple.On se dit : "super je vais faire une classe héritant de Zend_Soap Auotodiscover facil et redefinir setClass avec https facile !"

Et bien non car la plupart des champs de Zend_soap_Server sont PRIVATE (ex: $this->_reflection) donc inaccessible depuis la classe fille :-(
du coup obliger de reecrire entierement sa propre classe.

J'aimerai bien que les pro de la POO m'explique cette tendance dans le framework a mettre les champs en private au lieu de protected.
(ok il y a un peu de frustration dans mon commentaire :-) )

Hors ligne

 

#3 20-10-2008 16:42:16

thomasb
Membre
Date d'inscription: 26-05-2008
Messages: 30

Re: Zend_Soap et modele MVC patch de AutoDiscover.php

Mouais mais bon le patch fourni permet de palier au probleme du boostrap dans le WSDL.
Ce deja un point.

Maintenant j'ai un souci...
voici ma class webservice.php

<code>
<?
class includes_webservice{
   
    /**
     * dis bonjour ! smile
     *
     * @param string $name
     * @return string $name
     */
   
    public function sayhello($monsieur){
        return $monsieur;
    }
}
?>
</code>
et mon controlleur :
<code>
function soapclientAction(){
       
        $client = new SoapClient('http://***********/webservice/discover');
        try{
            echo $result =  $client->sayhello('Tomtom');
            var_dump($client);
        var_dump($result);
        }catch(SoapFault $e){
            print_r($e);
        }
       
        $this->getHelper('layout')->disableLayout();
        $this->getHelper('viewRenderer')->setNoRender();
       
    }
   
   
    function discoverAction(){
        Zend_Loader::loadClass('Includes_WebService');
        require_once 'Zend/Soap/AutoDiscover.php';
       
        $autodiscover = new Zend_Soap_AutoDiscover();
        $autodiscover->setClass('includes_webservice', '', null, "http://********/webservice");
       
        $autodiscover->handle();
        $this->getHelper('layout')->disableLayout();
                      $this->getHelper('viewRenderer')->setNoRender();
          
    }
   
    function indexAction(){
       
        try{
           
            $server = new Zend_Soap_Server('http://*********/webservice/discover');
            $server->setClass('includes_webservice');
           
            $server->handle();
        }catch(SoapFault $e){
            print_r($e);
        }
        $this->getHelper('layout')->disableLayout();
          $this->getHelper('viewRenderer')->setNoRender();
           $this->render();
       
    }
</code>

L'action SoapClient me renvoie ca :

NULL

Super non?
smile
Une idée?

Dernière modification par thomasb (20-10-2008 16:43:32)

Hors ligne

 

#4 20-10-2008 17:07:49

ichevc02
Membre
Date d'inscription: 25-07-2007
Messages: 127

Re: Zend_Soap et modele MVC patch de AutoDiscover.php

Bonjour,

je ne sais pas si ca influe l'Autodiscover mais le nom de la variable dans le docType ne correspond pas au nom de la variable utilisée ($name et $monsieur)

pour le client meme chose que dans l'autre post :

Code:

$options = array('trace' => 1);

$client = new SoapClient('http://***********/webservice/discover',$options);
//appel de la methode ici
//puis
var_dump($Client ->__getLastRequestHeaders()); // header de la requete
var_dump($Client ->__getLastRequest());  // xml de la requete
var_dump($Client ->__getLastResponseHeaders()); // header hhtp de la reponse
var_dump($Client ->__getLastResponse());  // xml de la reponse

pour voir ou ca plante

Hors ligne

 

#5 20-10-2008 18:17:45

thomasb
Membre
Date d'inscription: 26-05-2008
Messages: 30

Re: Zend_Soap et modele MVC patch de AutoDiscover.php

Bon j'ai trouvé ... merci c t un petit souci de nomage de le xml.

J'ai une grande question en fait smile :

J'ai développé une plateforme en MVC ... avec des controleurs qui affiche des graph des valeurs etc....
Je pensais utilisé Zend_Soap pour pouvoir créer un services web a partir d'une class webservice qui serait dérivée d'une class zend_controlleur mais apparemment c'est impossible...
L'idée serait de récupérer tout mon environnement authentification, config, ACL, fonctions etc....

Des infos des idées?

Hors ligne

 

#6 21-10-2008 10:04:25

thomasb
Membre
Date d'inscription: 26-05-2008
Messages: 30

Re: Zend_Soap et modele MVC patch de AutoDiscover.php

thomasb a écrit:

Bon j'ai trouvé ... merci c t un petit souci de nomage de le xml.

J'ai une grande question en fait smile :

J'ai développé une plateforme en MVC ... avec des controleurs qui affiche des graph des valeurs etc....
Je pensais utilisé Zend_Soap pour pouvoir créer un services web a partir d'une class webservice qui serait dérivée d'une class zend_controlleur mais apparemment c'est impossible...
L'idée serait de récupérer tout mon environnement authentification, config, ACL, fonctions etc....

Des infos des idées?

UP? smile

Hors ligne

 

#7 21-10-2008 10:15:20

ichevc02
Membre
Date d'inscription: 25-07-2007
Messages: 127

Re: Zend_Soap et modele MVC patch de AutoDiscover.php

Bonjour,

je suis désoler je ne comprends pas ta question.
Peux-tu expliquer davantage ce que tu veux faire  (j'ai du mal le matin)

Hors ligne

 

#8 21-10-2008 10:24:17

thomasb
Membre
Date d'inscription: 26-05-2008
Messages: 30

Re: Zend_Soap et modele MVC patch de AutoDiscover.php

En fait je voudrais que ma class qui décrit le webservice soit un vrai controller...
Je voudrais renvoyer des vues (en chaine) au client soap par exemple.

Est ce stupide?

Hors ligne

 

#9 21-10-2008 15:42:43

thomasb
Membre
Date d'inscription: 26-05-2008
Messages: 30

Re: Zend_Soap et modele MVC patch de AutoDiscover.php

thomasb a écrit:

En fait je voudrais que ma class qui décrit le webservice soit un vrai controller...
Je voudrais renvoyer des vues (en chaine) au client soap par exemple.

Est ce stupide?

up again ...


La par contre je vois pas l'interet du Zend_Soap Server dans un modèle MVC si qq peut m'expliquer...

L'interet aurait été d'avoir ma class décrivant l'API en tant que controller héritant de Zend_Controller_Action... dans l'état actuel des choses j'ai juste une pauvre classe qui n'accède a aucun objet du framework...

Que dois je faire? Recoder mes fonctions dans l'API du webservice? et ce sans bénificier des composants du framework? Merci.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages