title: Optional Parameters not optional for Soap Calls using WSDL mode
body: <p>I try to call a webservice provided by SAP to update customer data. I used SoapUI for testing the connection and the actual request that is needed. Everything worked fine, this is how the SoapUI request for changing an email address looks like:</p>
  
  <pre><code>&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style"&gt;
     &lt;soapenv:Header/&gt;
     &lt;soapenv:Body&gt;
        &lt;urn:Ze12RfcMaintainCustomer&gt;     
           &lt;!--Optional:--&gt;
           &lt;PiTEmail&gt;
              &lt;!--Zero or more repetitions:--&gt;
              &lt;item&gt;
                 &lt;StdNo&gt;X&lt;/StdNo&gt;
                 &lt;EMail&gt;me@example.com&lt;/EMail&gt;
              &lt;/item&gt;
           &lt;/PiTEmail&gt;
           &lt;!--Optional:--&gt;
           &lt;PiTEmailX&gt;
              &lt;!--Zero or more repetitions:--&gt;
              &lt;item&gt;
                 &lt;StdNo&gt;X&lt;/StdNo&gt;
                 &lt;EMail&gt;X&lt;/EMail&gt;
              &lt;/item&gt;
           &lt;/PiTEmailX&gt;
           &lt;PieKunnr&gt;4711&lt;/PieKunnr&gt;
        &lt;/urn:Ze12RfcMaintainCustomer&gt;
     &lt;/soapenv:Body&gt;
  &lt;/soapenv:Envelope&gt;
  </code></pre>
  
  <p>The webservice accepts a whole lot more parameters, but all of them are optional and not needed for this task.</p>
  
  <p>Now if I try to do the same request in PHP with a SoapClient in WSDL mode, I get an error for every optional parameter that is not included in the request, e.g.:</p>
  
  <pre><code>SOAP-ERROR: Encoding: object hasn't 'EmailSrch' property
  </code></pre>
  
  <p>This is my code (simplified):</p>
  
  <pre><code>$params = array(
      'PieKunnr' =&gt; 4711,
      'PiTEmail' =&gt; array(
          'item' =&gt; array(
              'StdNo' =&gt; 'X',
              'EMail' =&gt; 'me@example.com',                    
          ),        
      ),
      'PiTEmailX' =&gt; array(
          'item' =&gt; array(
              'StdNo' =&gt; 'X',
              'EMail' =&gt; 'X',                    
          ),        
      ),    
  );
  
  $result = $service-&gt;Ze12RfcMaintainCustomer($params);
  </code></pre>
  
  <p>If I put all the optional parameters into the request, it works. </p>
  
  <p>Why can optional parameters not be omitted in SoapClient requests?</p>