SOAPを使ってPHPとPDFを連携させる その2

月末でドタバタしていましたが、検証は続けていました。
今回は、ZendFrameworkのZend_Soapを利用した接続を検証しました。


結論から言うと、接続は可能でした。
Zend_Soap_AutoDiscoverを利用した半自動設定も可能です。
ただし、Zend_Soapには仕様上の問題点がありました。
詳細は、下記のバグトラッカーを見て頂きたいのですが、
http://framework.zend.com/issues/browse/ZF-6351
簡単に説明すると、Soapのスタイルをデフォルトの「RPCスタイル」ではなく、
PDFの連携で求められる「document-literalスタイル」に設定する場合、
戻り値の返し方が変わってくるというものです。

// RPCスタイルの場合
public function helloYou($firstname, $lastname) {
    return "Hello {$firstname} {$lastname}";
}
//document-literalスタイルの場合
public function helloYou($parameters) {
    return array('helloYouResult' => "Hello {$parameters->firstname} {$parameters->lastname}");
}

上記の2つが全く同じ動作をするという結果になります。
逆に言うと、RPCスタイルで作成した場合、後にスタイルを変更するとエラーになると言うことです。
なぜこういう仕様になったのか判りませんが、この点だけをみるとスマートな設計ではないです。


この報告者は、それを回避するラッパークラスを作成していますが他のアプローチを考えるべきかも
しれないとも言っています。
いろいろ調べた結果、document-literalスタイルが標準となりつつあるそうなので早急に仕様を確定
してほしいですね。とりあえずVoteはしておきましたが、改善策なんて思いつきません・・・^^;