2006/01/29
S2Service.PHP5 を作ってみる。
S2Axisとか、EthnaのSOAPとかをマネしようと作ってみた。(リモーティングみたいなのをマネしてみたかった)
今回はSoapServer だけ作ってみました。今後 xmlrpc を作ってみる予定。
S2Service.PHP5 は S2Axisみたいな のを目指してみる。
ref - S2Service.PHP5.tar.gz
PHPには型を宣言しなくていいという、良くも悪くもいい特徴があるので、素の状態から(インタフェースから)WSDLを作るのが困難なので、コメント文を使っています。
こんな感じ
<?php
/**
* @class echoservice
* @option(
* "encoding" => "UTF-8",
* "soap_version" => SOAP_1_2,
* )
*/
interface echoes {
/**
* @return type.xsd.string
*/
public function message();
/**
* @param type.xsd.string
* @return type.xsd.string
*/
public function echoes($message);
/**
* @return type.xsd.string
*/
public function hello();
}
ちなみに、WSDL吐き出し部分にxmlwriterを使ってみたけど、「うがー」となってしまったので文字列をそのまま使うというヘタレ。
誰かこのプロジェクト拾ってください。
使いかた
※ サンプルは src/examples にあるので、そちらを参考に。
diconを用意してみる。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"components21.dtd">
<components>
<component class="echoes">
<meta name="soap-service">"EchoService"</meta>
</component>
<component class="calc">
<meta name="soap-service" />
</component>
</components>
インタフェースを用意してみる
<?php
/**
* @class echoservice
* @option(
* "encoding" => "UTF-8",
* "soap_version" => SOAP_1_2,
* )
*/
interface echoes {
/**
* @return type.xsd.string
*/
public function message();
/**
* @param type.xsd.string
* @return type.xsd.string
*/
public function echoes($message);
/**
* @return type.xsd.string
*/
public function hello();
}
@classで実装クラスを 指定しているので、 作成します。
<?php
class echoservice {
public function message(){
return "Hello!World!!";
}
public function echoes($msg){
return $msg;
}
public function hello(){
return $this->knock();
}
private function knock(){
return "Im taken...";
}
}
?>
残りは書きかけ中。(OOP何それ?な設計だけど。気にしない)
Trackback
No Trackbacks
Track from Your Website
http://blog.xole.net/trackback/tb.php?id=395

Comment
No Comments