• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • SoapParam::SoapParam()

    (PHP 5, PHP 7)

    SoapParam constructor

    说明

    SoapParam::SoapParam(mixed $data,string $name)

    Constructs a new SoapParam object.

    参数

    $data

    The data to pass or return. This parameter can be passed directly as PHP value, but in this case it will be named asparamNand the SOAP service may not understand it.

    $name

    The parameter name.

    范例

    Example #1 SoapParam::SoapParam() example

    <?php
    $client = new SoapClient(null,array('location' => "http://localhost/soap.php",
                                        'uri'      => "http://test-uri/"));
    $client->SomeFunction(new SoapParam($a, "a"),
                          new SoapParam($b, "b"),
                          new SoapParam($c, "c"));
    ?>
    

    参见

    • SoapClient::__soapCall() Calls a SOAP function
    • SoapVar::SoapVar() SoapVar constructor
    Make sure to always cast your parameters prior to creating a SoapParam. Otherwise you will wind up with an incorrect xsi:type and possibly no value.
    $value = 0;
    $param0 = new SoapParam(
            $value, $param0_name);
    will give you:
    <$param0_name xsi:type="xsd:null"></$param0_name>
    while:
    $value = 0;
    $param0 = new SoapParam(
            (int)$value, $param0_name);
    <$param0_name xsi:type="xsd:int">0</$param0_name>
    which is probably what you want.
    If you want to create a SOAP parameter like:
    <a n="something">DATA</a> 
    You can try like this:
    array('a' => array('_' => 'DATA', 'n'=>'something'));
    This will generated xml like this:
    <a n="something">DATA</a>
    You probably want to try SoapVar instead of SoapParam if you want to specify attributes/namespace.
    You have to use SoapVar instead of SoapParam if you want it to do something fancy like using different opening and closing tags. I ran into this using the SOAP API for Zimbra.
    Is there anyway to create a SOAP parameter like:
    <a n="something">DATA</a> 
    If I try to form a param using the following code the resulting request is:
    Code: SoapParam("DATA", "a n=\"something\"");
    Result: <a n="something">DATA</a n="something">
    This is giving me an error from the SOAP server because its expecting a properly formed closing tag without the encapsulated attribute.
    You can also pass parameters (at least simple ones) to SOAP functions like this:
    <?php
     $return = $client->someFunction(array('paramName' => 'paramValue'));
    ?>