PHP 8.0.3 Released!

SoapServer::__construct

(PHP 5, PHP 7, PHP 8)

SoapServer::__constructSoapServer コンストラクタ

説明

public SoapServer::__construct ( string|null $wsdl , array $options = [] )

このコンストラクタにより SoapServer オブジェクトを WSDL または非 WSDL モードで作成することが可能です。

パラメータ

wsdl

WSDL モードの場合、これに WSDL ファイルの URI を指定する必要があります。 WSDL モードでない場合、null を指定し、uri オプションを設定する必要があります。

options

デフォルトの SOAP バージョン (soap_version), 内部の文字エンコーディング (encoding), アクターの URI (actor) を指定することができます。

classmap オプションにより、WSDL 型を PHP のクラスにマッピングすることが可能です。 このオプションには、キーとしてWSDL 型、値として PHP クラスの名前を持つ配列を指定する必要があります。

typemap オプションは、型マッピングの配列です。 この配列のキーは type_nametype_ns (名前空間 URI)、from_xml (引数として文字列をひとつ受け取るコールバック) そして to_xml (引数としてオブジェクトをひとつ受け取るコールバック) です。

cache_wsdl オプションは、 WSDL_CACHE_NONEWSDL_CACHE_DISKWSDL_CACHE_MEMORY あるいは WSDL_CACHE_BOTH のいずれかです。

その他に features というオプションもあり、 SOAP_WAIT_ONE_WAY_CALLSSOAP_SINGLE_ELEMENT_ARRAYSSOAP_USE_XSI_ARRAY_TYPE を設定することができます。

send_errors オプションを false にすると、 個別のエラーメッセージではなく汎用的なメッセージ ("Internal error") を送信できます。

例1 SoapServer::__construct() の例

<?php

$server 
= new SoapServer("some.wsdl");

$server = new SoapServer("some.wsdl", array('soap_version' => SOAP_1_2));

$server = new SoapServer("some.wsdl", array('actor' => "http://example.org/ts-tests/C"));

$server = new SoapServer("some.wsdl", array('encoding'=>'ISO-8859-1'));

$server = new SoapServer(null, array('uri' => "http://test-uri/"));

class 
MyBook {
    public 
$title;
    public 
$author;
}

$server = new SoapServer("books.wsdl", array('classmap' => array('book' => "MyBook")));

?>

参考

add a note add a note

User Contributed Notes 1 note

up
11
Anonymous
8 years ago
// Workin Server with Client for localhost

// server.php

<?php
class MyClass {
  public function
helloWorld() {

    return
'Hallo Welt '. print_r(func_get_args(), true);
  }
}

try {
 
$server = new SOAPServer(
   
NULL,
    array(
    
'uri' => 'http://localhost/soap/server.php'
   
)
  );

 
$server->setClass('MyClass');
 
$server->handle();
}

catch (
SOAPFault $f) {
  print
$f->faultstring;
}

?>

// client.php:

<?php
$client
= new SoapClient(null, array(
     
'location' => "http://localhost/soap/server.php",
     
'uri'      => "http://localhost/soap/server.php",
     
'trace'    => 1 ));

echo
$return = $client->__soapCall("helloWorld",array("world"));
?>

// Hope you like it
To Top