2006/01/29

S2Service.PHP5 を作ってみる。

ポスト @ 18:02:25 , 修正 @ 2006/01/29 18:29:19 | ,     このエントリーを含むはてなブックマーク

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

Post Your Comment


*は入力必須です。E-Mailは公開されません。

1 + 2 =