Bug #71763 [Opn]: Soap failed if param WAS reference

From: Date: Thu, 10 Mar 2016 03:00:25 +0000
Subject: Bug #71763 [Opn]: Soap failed if param WAS reference
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-199718@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=71763&edit=1

 ID:                 71763
 User updated by:    ppbg at andreika dot info
 Reported by:        ppbg at andreika dot info
 Summary:            Soap failed if param WAS reference
 Status:             Open
 Type:               Bug
 Package:            Arrays related
-Operating System:   linux
+Operating System:   
 PHP Version:        7.0.4
 Block user comment: N
 Private report:     N

 New Comment:

/


Previous Comments:
------------------------------------------------------------------------
[2016-03-10 02:56:28] ppbg at andreika dot info

Description:
------------
I got strange behavour in soap extension but I think it is not soap-related.

If I call soap method with "complex" params I lost some tags in request ( it can be
invalid and dropped while wsdl schema validation ? ) if that param was reference

reproduced in ubuntu and centos (remi package) with 7.0.3 and 7.0.4

Test script:
---------------
$client = new \SoapClient('WebStoreWS.xml', [
            'trace' => true,
        ]);
$params = [
  'p' => [
    'param1' => 'OK',
    'param2' => [
      'item' => 1,
      'item2' => 2
    ]
  ]
];

if ( MAKEREF || UNLINKIT || FIXME) {
  // make ref
  $p = &$array['p']['param2'];
  if ( UNLINKIT) {
     //remove ref
     unset($p);
  }
  if (FIXME) {
// "touch" any key of array to fix problem
   $array['p']['param2']['item'] =
$array['p']['param2']['item'];
 }
} 



try {
  $client->myFunc($params);
} catch(\Exception $e) {
  echo $client->__getLastRequest();
}

Expected result:
----------------
// it works in php5.6 (all params) and php7.0.4 with !MAKEREF OR FIXME= true
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope ...>
  <p>
    <param1>OK</param1>
    <param2>
      <item>1</item>
      <item2>2</item2>
    </param2>
  </p>
</SOAP-ENV>

Actual result:
--------------
// it fails in php7.0.4 with MAKEREF AND !FIXME
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope ...>
  <p>
    <param1>OK</param1>
  </p>
</SOAP-ENV>

so if we made a reference in subarray of params we got problems even unlink reference. But if we
change any param of subarray (even on the same value) the problem will be fixed. 


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=71763&edit=1


Thread (6 messages)

« previous php.bugs (#199718) next »