Bug #51561 [Opn]: SoapServer with a extented class and using sessions, lost the setPersistence()

From: Date: Thu, 15 Apr 2010 10:55:27 +0000
Subject: Bug #51561 [Opn]: SoapServer with a extented class and using sessions, lost the setPersistence()
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-149582@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=51561&edit=1

 ID:               51561
 User updated by:  marciomaianunes at hotmail dot com
 Reported by:      marciomaianunes at hotmail dot com
 Summary:          SoapServer with a extented class and using sessions,
                   lost the setPersistence()
 Status:           Open
 Type:             Bug
 Package:          SOAP related
 Operating System: Linux 2.6.26
-PHP Version:      5.2.13
+PHP Version:      5.2.11

 New Comment:

Same error in PHP 5.2.6-1+lenny3


Previous Comments:
------------------------------------------------------------------------
[2010-04-15 12:50:56] marciomaianunes at hotmail dot com

Description:
------------
A SoapServer using sessions and extending some class included by require
or 
include functions, lose the persistence seted by setPersistence 
(SOAP_PERSISTENCE_SESSION)

The script below will work fine with one of 3 changes (no idea why):

- Declaring the class "Server2" in the same file as class "Server"
(Server1.php) 
and removing the require_once(Server2.php);

- Removing the "session_start();" from server.php

- If class "Server" do no extend any class, it also works.

Thanks a lot!


Test script:
---------------
## Client.php ##
<?php 
$cli = new SoapClient(null, array('location' =>
"http://localhost:81/bugTest/Server.php",
'uri' =>
"blablabla.com",'encoding' => "ISO-8859-1",'soap_version'
=>
SOAP_1_2));
$cli->setValue(100);
$response = $cli->getValue();
echo "Get = ".$response;	
?>

## Server.php ##
<?php 
session_start();
require_once("Server2.php");
class Server extends Server2 {
	private $value;
	public function setValue($param) { $this->value = $param; }
	public function getValue() { return $this->value; }
}
$server = new SoapServer(null, array('uri' =>
"blablabla.com",'encoding'
=> "ISO-8859-1",'soap_version' => SOAP_1_2));
$server->setClass("Server");
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
?>

## Server2.php ##
<?php class Server2{ private $nothing; } ?>

Expected result:
----------------
Get = 100

Actual result:
--------------
Get = 


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



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


Thread (5 messages)

« previous php.bugs (#149582) next »