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

Zend_Soap側のサンプルコード

ファイル名 index.php

<?php
include_once 'Zend/Soap/Server.php';
include_once 'Zend/Soap/AutoDiscover.php';

class Hello {
	/** @var string $name1 */ public $name1 = '';
	/** @var string $name2 */ public $name2 = '';
	/** @var string $name3 */ public $name3 = '';
}

class InputHello {
	/** @var string $input1 */ public $input1;
	/** @var string $input2 */ public $input2;
}

class HelloWorldService {

/**
 * Enter description here...
 * @param InputHello $input
 * @return Hello
 */
	public function gethello($input){
		$hello = new Hello();
		$hello->name1 = $input->input->input1 . " world!";
		$hello->name2 = $input->input->input2 . " world!!";
		$hello->name3 = print_r($input,true);		
		return array('gethelloResult' => $hello);
	}
}

if(isset($_GET['wsdl'])) {
	$autodiscover = new Zend_Soap_AutoDiscover();
	try {
    	$autodiscover->setOperationBodyStyle( array('use' => 'literal') );
    	$autodiscover->setBindingStyle( array('style' => 'document') );
    	$autodiscover->setClass('HelloWorldService');
    	$autodiscover->handle();
	} catch (Zend_Soap_AutoDiscover_Exception $e) {
		echo $e->getMessage();
	}
} else {
    //下記のURLはファイルを置く場所に合わせて編集
    $soap = new Zend_Soap_Server("http://192.168.0.1/ZendSoap/sample/index.php?wsdl");
    try {
    	$soap->setClass('HelloWorldService');
    	$soap->handle();
    } catch (Zend_Soap_Server_Exception $e) {
    	echo $e->getMessage();
    }
    
}


注意点としては、クラスのコメントも含めてAutoDiscoverで解析されているので省略すると動きません。
また、gethello()において、値の渡し方や引数の戻し方が美しくないですが試行錯誤の結果です。
以前に書いたようにZend_Soapの問題なのか、もっと正しい書き方があるのかは不明です。
$hello->name3は見ての通り、そのデバッグ用ですね。
エラー処理も、これじゃ意味ないよというツッコミは無しで。


通信の中身を見ないとデバッグするのが難しいのですが、FireFox+FireBugを利用すると楽です。
PDFがFireFoxを道連れに落ちたりしますが・・・


次回はPDF側の作成手順を。