Зарегистрируйте методы класса с помощью nusoap - PullRequest
2 голосов
/ 10 ноября 2011

У меня есть класс php, и я хочу использовать его с Nusoap . Могу ли я зарегистрировать метод класса, который уже существует внутри nusoap, с помощью команды register?

Образец:

Здесь мы регистрируем функцию, которую мы определили внутри этого скрипта. Но если у нас есть класс, который мы, возможно, разработали несколько месяцев назад, и мы хотим использовать его в качестве веб-сервиса с использованием WSDL. Есть ли способ зарегистрировать методы этого класса, чтобы Nusoap создавал WSDL своей структуры (методы внутри)?

require_once("nuSOAP/lib/nusoap.php");

$server = new soap_server();

$namespace = "http://localhost/nusoapSCRIPT/index.php";

$server->wsdl->schemaTargetNamespace = $namespace;

$server->configureWSDL("SAMPLE");

$server->register('HelloWorld');

function HelloWorld()
{
return "Hello, World!";
}

Ответы [ 2 ]

6 голосов
/ 11 ноября 2011

Ну, вот как я решаю это ... может быть, кто-то может попробовать подход по-другому.

[File : index.php]
require_once "nuSOAP/lib/nusoap.php";    
require_once "myClass.class.inc.php";

$namespace = "http://localhost/html/nusoap/index.php";

// create a new soap server
$server = new soap_server();

// configure our WSDL
$server->configureWSDL("Class Example");

// set our namespace
$server->wsdl->schemaTargetNamespace = $namespace;

// register the class method and the params of the method
$server->register("myClass.ShowString"                       
                 ,array('name'=>'xsd:string')
                 ,array('return'=>'xsd:string')
                 ,$namespace,false
                 ,'rpc'
                 ,'encoded'
                 ,'Sample of embedded classes...' 
                                );

//
// Get our posted data if the service is being consumed
// otherwise leave this data blank.                
$POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) 
                ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';

// pass our posted data (or nothing) to the soap service                    
$server->service($POST_DATA);                
exit();

и код класса.

[File 'myClass.class.inc.php']

class myClass{

     public function __construct(){

     }


     public function ShowString($mens){

        return "\n##Remote Class :".__CLASS__."\n##Remote Method : ".__METHOD__."\n## mSG :{$mens}";

     }

}

Я также создаю мыльный клиент на c #, и он правильно использует службу soap.

Надеюсь, это поможет!

0 голосов
/ 09 апреля 2013

Вы можете вызвать метод, используя getProxy()

$proxy->className__methodname
...