0

zendフレームワークで新しいタイプを追加できません。私はこれを試しました

$server = new Zend_Soap_Server('http://localhost/CycleProphet/amember/ws/index/wsdl');

$server->addComplexType('AMemberUser');

class AMemberUser
{
    public $UserId;
    public $FirstName;
    public $LastName;
}      

タイプが追加されましたが、空です。この記事http://framework.zend.com/manual/en/zend.soap.wsdl.html#zend.soap.wsdl.types.add_complexを使用していますが、役に立ちません。

4

1 に答える 1

1

あなたのコメントの後、私は自分の答えを書き直し、wsdlでいくつかの解決策を提供することにしました:

<?php

require_once('Zend/Soap/Client.php');
require_once('Zend/Soap/Server.php');
require_once('Zend/Soap/Wsdl.php');
require_once('Zend/Soap/AutoDiscover.php');

class SoapController extends AppController 
{    
    public function zendclientAction()
    {
        $_client = new Zend_Soap_Client('http://localhost/php5_testapp/soap/zendserver?wsdl');
        $_ret = $_client->addNumbers(3, 5);

        echo('<pre>');
        var_dump($_ret);
        echo('<pre>');
        die();
    }

    public function zendserverAction()
    {
        if(isset($_GET['wsdl'])) {
            $_autod = new Zend_Soap_AutoDiscover();
            $_autod->setClass('MySoapServerClass');
            $_autod->handle();
        }
        else {
            $_server = new Zend_Soap_Server('http://localhost/php5_testapp/soap/zendserver?wsdl');
            $_server->setClass("MySoapServerClass");
            $_server->handle();
        }

        exit;
    }
}

/**
 * My Soap Server Class
 */
class MySoapServerClass {

    /**
     * This method adds two numbers
     * 
     * @param integer $a
     * @param integer $b
     * @return string
     */
    public function addNumbers($a, $b) {

        return 'Outcome is: ' . ($a + $b);
    }
}

これで、必要なクラスを追加できます。ただし、WSDL ファイルはこれに基づいて生成されるため、クラスは十分に文書化されている必要があります。

それが役に立てば幸い!

于 2012-04-17T07:44:55.400 に答える