Zend_Soap-調理方法

最近、私の前に疑問が浮上しました。いくつかの活動のためにSOAPサーバーを編成することです。 Zend_Soapでこれを実装するというアイデアを得ましたが、非常にシンプルであることがわかりました。

たとえば、4つのファイルが必要です。

  1. server.php- 実際にはSOAPサーバー自体
  2. wsdl.php -WSDL
  3. class.php- 関数を持つクラス
  4. client.php- 仕事の例としてのクライアント



server.php


require_once 'Zend/Loader.php' ;
Zend_Loader::registerAutoload();

include ( 'class.php' );

$server = new Zend_Soap_Server( "http://localhost/soap/wsdl.php" );
$server->setClass( 'Server' );
$server->handle();
</code>

* This source code was highlighted with Source Code Highlighter .



wsdl.php


require_once 'Zend/Loader.php' ;
require_once 'class.php' ;
Zend_Loader::registerAutoload();

$wsdl = new Zend_Soap_AutoDiscover();
$wsdl->setUri( 'http://localhost/soap/server.php' );
$wsdl->setClass( 'Server' );
$wsdl->handle();


* This source code was highlighted with Source Code Highlighter .


server.php-ご覧のとおり、 wsdl.phpのように、それ自体にはロジックがありません。 どちらも、呼び出し関数がすでに含まれているclass.phpクラスを参照します。 他のすべてはZend_Soapによって行われます。

class.php



<?php
class Server {

private $_db;

/** <br/>
* . <br/>
* . <br/>
*/ <br/>

function __construct() {
try {
$ this ->_db = new Zend_Db_Adapter_Oracle(array(
'username' => 'demo' ,
'password' => 'demo' ,
'dbname' => '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(COMMUNITY=tcp.telekom.lv)(PROTOCOL=TCP)(Host=127.0.0.1)(Port=1521)))(CONNECT_DATA=(SID=XE)))'
));
} catch (Zend_Exception $e) {
return array( 'code' => 200,
'error' => 'Database connection error' );
}
}

/** <br/>
* Get Simple Demo Action <br/>
* <br/>
* @param array $userData <br/>
* @param array $requestData <br/>
* @return array <br/>
*/ <br/>

public function getSimpleAction($userData = array(), $requestData = array()) {

/** <br/>
* $userData = array('username' => '', 'password' => '') <br/>
* $requestData = array('value1' => '', 'value2' => '') <br/>
*/ <br/>

if (!$ this ->_checkCredentials($userData)) {
return array( 'code' => 500,
'error' => ' .' );
}

$array = array();

try {
/** <br/>
* <br/>
* Zend_Exception - . <br/>
* <br/>
* throw new Zend_Exception('Error :(', 100); <br/>
* <br/>
* $array , <br/>
* . <br/>
* <br/>
* $array['ok'] = 'true'; <br/>
*/ <br/>
} catch (Zend_Exception $e) {
return array( 'code' => 101,
'error' => 'Exception: ' . $e->getMessage());
}

return $array;
}

private function _checkCredentials($userData) {

/** <br/>
* <br/>
* return true/false <br/>
*/ <br/>

return true ;
}

/** <br/>
* . <br/>
*/ <br/>

function __destruct() {
$ this ->_db->closeConnection();
}
}


* This source code was highlighted with Source Code Highlighter .


最も重要なことは、主な機能に関するコメントを忘れないことです。

/**
* Get Simple Demo Action <br/>
* <br/>
* @param array $userData <br/>
* @param array $requestData <br/>
* @return array <br/>
*/
<br/>

* This source code was highlighted with Source Code Highlighter .


パラメータのタイプを、string、array、intのいずれであるかを説明します。 または他の許可された。

client.php



require_once 'Zend/Loader.php' ;
Zend_Loader::registerAutoload();

$client = new Zend_Soap_Client( "http://localhost/soap/wsdl.php" );
$userdata = array( 'username' => 'demoUsername' , 'password' => 'demoPassword' );
$requestData = array( 'parameter' => 'value' );
print_r($client->getSimpleAction($userdata, $requestData));


* This source code was highlighted with Source Code Highlighter .


クライアントの助けを借りて、パフォーマンスを確認するだけです。

Zend_Soapの簡単な説明はこれで終わりです。 原則として、そのようなベースで、あなたは構築することができます 実質的に SOAPアプリケーション。

Source: https://habr.com/ru/post/J57571/


All Articles