передача параметров в веб-сервисе с Zend Framework - PullRequest
1 голос
/ 23 марта 2012

Я создаю веб-сервис аутентификации с Zend Framework. Вот мой Сервер:

<?php

require_once APPLICATION_PATH . '/controllers/services/Authentification.php';

class ServController extends Zend_Controller_Action
{
    private $_WSDL_URI = 'http://127.0.0.1/EverTags1/webAuthentification/public/Serv/?wsdl';

    public function init()
    {
    }

    public function indexAction()
    {
        $this->_helper->viewRenderer->setNoRender();    
        if(isset($_GET['wsdl'])) {
            $this->hadleWSDL(); //return the WSDL
        } else {
            $this->handleSOAP(); //handle SOAP request
                }               
    }

    private function hadleWSDL()
    {
        $autodiscover = new Zend_Soap_AutoDiscover();//Zend_Soap_AutoDiscover which will create the WSDL file
        $autodiscover->setClass('Authentification');// class that we use as webservice
        $autodiscover->handle();
    }

    public function handleSOAP()
    {
    $soap = new Zend_Soap_Server($this->_WSDL_URI); 
        $soap->setClass('Authentification');
        $soap->handle();    
    }
}

Клиент:

<?php

class ClientController extends Zend_Controller_Action
{
    private $_WSDL_URI = 'http://127.0.0.1/EverTags1/webAuthentification/public/Serv/?wsdl';

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
       $client = new Zend_Soap_Client($this->_WSDL_URI);

        $this->view->UserInformation = $client->authentification('marwa','password');
    }


}

класс, который я использую в качестве веб-сервиса

<?php

ini_set("soap.wsdl_cache_enabled", "0");
//require_once realpath(APPLICATION_PATH . '/../library/').'/UserClass.php';

class Authentification {
    /**
     *
     * @param string $username
     * @param string $password
     * @return string
     */
 public function authentification($username,$password) {

        $dbAdapter = Zend_Db_Table::getDefaultAdapter();
        $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);

        $authAdapter->setTableName('standard_users')
                    ->setIdentityColumn('username')
                    ->setCredentialColumn('password');


        $authAdapter->setIdentity($username);
        $authAdapter->setCredential($password);
        //authentification
        $auth = Zend_Auth::getInstance();
        $result = $auth->authenticate($authAdapter);
        if ($result->isValid()) {
         //Authentification Réussie : on stocke les informations de l'utilisateur sauf le mot de passe !

           $user = $authAdapter->getResultRowObject();
           $UserName = $auth->getIdentity();

        }
        else  $UserName = 'Authentication failed (Unknown user or incorrect password)! Please Retry !';

  return $UserName;          
 }


}
?>

Моя проблема в том, что когда я пишу

 $authAdapter->setIdentity($username);
            $authAdapter->setCredential($password);

и передаю параметр в прототипе функции 'authentification', веб-служба не работает

, но когда яустановить параметр напрямую

$authAdapter->setIdentity('username');
                $authAdapter->setCredential('password');

, он работает.

Я не могу понять, почему параметры не переходят из прототипа функции 'authentification' в setIdentity и setCredential.

Буду благодарен, если вы сможете мне помочь

...