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はしておきましたが、改善策なんて思いつきません・・・^^;