©
このドキュメントでは、 php中国語ネットマニュアル リリース
(PHP 5 >= 5.0.1)
SoapServer::setClass — Sets the class which handles SOAP requests
$class_name
[, mixed $args
[, mixed $...
]] )Exports all methods from specified class.
The object can be made persistent across request for a given PHP session with the SoapServer::setPersistence() method.
class_name
The name of the exported class.
args
These optional parameters will be passed to the default class constructor during object creation.
没有返回值。
[#1] funky2step at gmail dot com [2011-11-25 01:54:55]
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)
{
}
}
?>
[#2] christiaan at oakfox dot net [2009-05-04 04:21:17]
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])
?>
[#3] Ariz Jacinto [2008-12-04 16:38:49]
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();
?>