Bug #51475 [Com]: setPersistance not possible with setObject

From: Date: Sat, 24 Apr 2010 20:09:03 +0000
Subject: Bug #51475 [Com]: setPersistance not possible with setObject
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-149853@lists.php.net to get a copy of this message
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] felipe@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


Thread (4 messages)

« previous php.bugs (#149853) next »