When passing arguments to the default class constructor, make sure that you don't try and use the magic __construct method because that won't work.
<?php
class MyClass
{
function MyClass($arg1, $arg2)
{
}
}
// Not:
class MyClass
{
function __construct($arg1, $arg2)
{
}
}
?>
SoapServer::setClass
(PHP 5 >= 5.0.1)
SoapServer::setClass — Define la clase que controla las peticiones SOAP
Descripción
Exporta todos los métodos de una clase específica.
El objecto puede ser persistente durante un determinado período de sesiones PHP con el método SoapServer::setPersistence().
Parámetros
-
class_name -
Nombre de la clase exportada.
-
args -
Estos parámetros opcionales serán pasados al constructor de la clase por defecto durante la creación del objeto.
Valores devueltos
No devuelve ningún valor.
Ver también
- SoapServer::SoapServer() - Constructor de SoapServer
- SoapServer::addFunction() - Añade una o más funciones al controlador de peticiones SOAP
- SoapServer::setPersistence() - Define el modo persistente para el SoapServer
funky2step at gmail dot com
25-Nov-2011 01:54
Matt
03-Jul-2009 08:25
As expected, using SoapServer::setClass() on a class with private or protected methods does not expose those methods.
Calling a private/protected method from the SoapClient causes this: E_ERROR "Call to protected method my_class::myPrivateMethod() from context"
christiaan at oakfox dot net
04-May-2009 04:21
You can also retrieve object properties the following way while using __autoload($class_name).
<?php
# Start Session
session_start();
# Auto Load Class as Required
function __autoload($class_name)
{
require_once "/var/www/example/class/". $class_name. ".php";
}
//service
$_SESSION[_bogus_session_name] = unserialize($_SESSION[_bogus_session_name]);
$server = new SoapServer('service.wsdl');
$server->setClass("MyClass");
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
$_SESSION[_bogus_session_name] = serialize($_SESSION[_bogus_session_name])
?>
Ariz Jacinto
04-Dec-2008 04:38
If you want your SOAP client to be able to save and then retrieve the object properties, you need to set the SOAP server to be persistent by setting session.auto_start=0, invoking session_start(), and SoapServer->setPersistence(SOAP_PERSISTENCE_SESSION) in the following manner:
<?php
//set ini
ini_set("soap.wsdl_cache_enabled", 0);
ini_set("session.auto_start", 0);
//class file
require_once('MyClass.php');
//for persistent session
session_start();
//service
$server = new SoapServer('service.wsdl');
$server->setClass("MyClass");
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
?>
