只有第一个参数传递给 SOAP 服务器 PHP 和 yii


Only first parameter passed to SOAP server PHP and yii

我正在使用yii来构建一个soap Web服务。我遇到了一个奇怪的问题。

我创建参数,例如:

  $new=array('x' => 1,
             'y' => 2,
             'z' => 3);

然后我发送它,SOAP 服务器只接收数组中的第一个值。

SOAP 服务器:

<?php
 class testController extends CController
{
    public function actions()
    {
        return array(
            'new'=>array(
                'class'=>'CWebServiceAction',
            ),
        );
    }
    /**
     * @param int $x
     * @param int $y
     * @param int $z
     * @return returnParams
     * @soap
     **/
    public function test($x,$y,$z)
    {
        Yii::log("$x : $y : $z", CLogger::LEVEL_ERROR);
        $returnParam = new returnParams();
        $returnParam->x = $x;
        $returnParam->y = $y;
        $returnParam->z = $z;
        return $returnParam;
    }
}
?>

返回参数类如下

    <?php
  class returnParams{
        /**
        * @var int
        * @soap
        **/
  public $x;
        /**
        * @var int
        * @soap
        **/
  public $y;
        /**
        * @var int
        * @soap
        **/
  public $z;
 }

所以它非常基本,接收信息并立即发回。

这是回应

object(stdClass)#2 (9) {
  ["x"]=>
  int(1)
  ["y"]=>
  NULL
  ["z"]=>
  NULL

日志显示$y和$z为空。谁能看到我在这里做错了什么?

提前谢谢。

正如我所说,答案如下。

我正在创建一个数组并将其发送到 SOAP 服务器

    $new=array('x' => 1,
             'y' => 2,
             'z' => 3);
$response = $client->test($new);

我应该在哪里做

$x = 1;
$y = 2;
$z = 3;
$response = $client->test($x,$y,$z);

感谢您的帮助。