Edit report at http://bugs.php.net/bug.php?id=51475&edit=1

 ID:          51475
 Comment by:  jstein at image dot dk
 Reported by: jstein at image dot dk
 Summary:     setPersistance not possible with setObject
 Status:      Feedback
 Type:        Bug
 Package:     SOAP related
 PHP Version: 5.3.2

 New Comment:

SOAP server:



<?php



class Test{

  private $var;

  function __construct(){

    $this->var=0;

  }

  function addOne(){

    $this->var++;

    return $this->getVar();

  }

}



$data=$HTTP_RAW_POST_DATA;

$one=new Test();

session_start();

$server=new
SoapServer(null,array('soap_version'=>SOAP_1_2,'uri'=>"http://jsp-hotel.dk/test";));

//$server->setObject($one); // Does not work

$server->setClass('Test'); // This does work

$server->setPersistence(SOAP_PERSISTENCE_SESSION);

$server->handle($data);

?>



SOAP Client:



<?php

$client = new SoapClient(null, array('location' =>
"http://jsp-hotel.dk/test/soappersistence-setClass.php";,

                                     'uri'      =>
"http://jsp-hotel.dk/test";,

                                     'trace'    => true));

try {

  echo $client->addOne();

  echo '<hr>';

  echo $client->addOne();

} catch (Exception $e) {

  echo $e . '<hr>';

  echo $client->__getLastRequest() . '<hr>' .
$client->__getLastRequestHeaders() . '<hr>' .

    $client->__getLastResponse() . '<hr>' .
$client->__getLastResponseHeaders();

}

?>



The client prints 1 2 (as expected) when server uses "setClass", but 1 1
when server uses "setObject".


Previous Comments:
------------------------------------------------------------------------
[2010-04-24 19:14:41] fel...@php.net

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.



------------------------------------------------------------------------
[2010-04-05 11:37:34] jstein at image dot dk

Description:
------------
In
http://svn.php.net/viewvc/php/php-src/trunk/ext/soap/soap.c?revision=296820&view=markup
at line 1322 "setPersistence" checks for "service->type == SOAP_CLASS",
but if you want to set an object with "setObject" instead of a class,
the service type will be SOAP_OBJECT.



I guess it should be possible to use persistence with setObject (that's
what the documentation says:
http://www.php.net/manual/en/soapserver.setpersistence.php ).





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



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

Reply via email to