Im folgenden finden sich einige Code-Schnipsel, die verdeutlichen sollen wie konkrete Methoden von dStore agora über die dStore_php Bibliothek aufgerufen werden.
use dStore_php\WebService; $service = new WebService\Service( WebService\Scheme::HTTP,'dbap-demo.dstore.de', 80); $request = new WebService\Requests\Item\Get\Request( new WebService\Requests\AccessData('default'), array( 'Template' => 'ItemList' ) ); $service->execute($request); $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); $items = $xml_result->getItems();
Über die Klasse \dStore_php\WebService\Requests\Request
können „generische“ Requests abgesetzt werden. Dies wird für die Methoden verwendet, für die es (noch) keine konkreten Implementierungen in der dStore_php gibt. Im folgende einige Beispiele für generische Anfragen.
use dStore_php\WebService; $service = new WebService\Service( WebService\Scheme::HTTP,'dbap-demo.dstore.de', 80); $request = new WebService\Requests\Request( new WebService\Requests\AccessData('default'), WebService\Requests\Method::GET, '/item/getBinary', array( 'BinaryCodeID' => 1 ) ); $service->execute($request); $BinaryCode = $request->getResponse()->getBody()->toString(); $ContentType = $request->getResponse()->getHeaderFields()->itemAt('Content-Type');
Alternativ zu dem oben beschriebenen Weg kann diese Methode auch über einen „generischen“ Request aufgerufen werden, dann stehen jedoch die Zugriffsfunktionen wie getItems()
nicht zur Verfügung und der Zugriff erfolgt ausschließlich über z.B. XPath:
use dStore_php\WebService; $service = new WebService\Service( WebService\Scheme::HTTP,'dbap-demo.dstore.de', 80); $request = new WebService\Requests\Request( new WebService\Requests\AccessData('default'), WebService\Requests\Method::GET, '/item/get', array( 'Template' => 'ItemList' ) ); $service->execute($request); $xmlDocument = $request->getResponse()->getBody()->toSimpleXmlDocument(); $result = $xmlDocument->xpath('/GetItemsResponse/Response/ListOfItems/Item');
Hier ein Aufruf der Methode om_GetSurchargeTypeTaxes mit einem DateTime-Parameter:
use dStore_php\WebService; $service = new WebService\Service( WebService\Scheme::HTTP,'dbap-demo.dstore.de', 80); $request = new WebService\Requests\Engine\Procedure\Request( new WebService\Requests\AccessData('default'), 'om_GetSurchargeTypeTaxes', array( 'Date' => new DateTime('last monday', new DateTimeZone('America/New_York')) ) ); $service->execute($request); $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); $ResultSet= $xml_result->getResultSet(); // Alternativ als Typ-gecastetes assoziatives PHP-Array: $ResultArray = $xml_result->getRowsAsArray();
In seltenen Fälle muss sichergestellt sein, dass mehrere Prozeduren in einem Batch gemeinsam aufgerufen werden. Hier ein entsprechendes Beispiel:
use dStore_php\WebService; $service = new WebService\Service( WebService\Scheme::HTTP,'dbap-demo.dstore.de', 80); $request = new WebService\Requests\Engine\Execute\Request( new WebService\Requests\AccessData('default']) ); $batch1 = new WebService\Requests\Engine\Execute\Batch(); $batch1->getStatements()->add( new WebService\Requests\Engine\Execute\ProcedureStatement( 'if_im_SearchTreeNodes_Conds', array( 'CharacteristicIDList' => '57', 'Operator1List' => '=', 'Condition1List' => 'tlimo', 'Operator2List' => null, 'Condition2List' => null, 'SearchOptionList' => '8', 'Delete' => 1, 'Separator' => '¶' ) ) ); $batch1->getStatements()->add( new WebService\Requests\Engine\Execute\ProcedureStatement( 'if_im_SearchTreeNodes_Conds', array( 'CharacteristicIDList' => '53', 'Operator1List' => '>', 'Condition1List' => '10', 'Operator2List' => '<', 'Condition2List' => '20', 'SearchOptionList' => '26', 'Delete' => 0, 'Separator' => '¶' ) ) ); $batch1->getStatements()->add( new WebService\Requests\Engine\Execute\ProcedureStatement( 'im_SearchTreeNodes_Pu', array( 'LevelID' => 5 ) ) ); $request->getBatches()->add($batch1); $service->execute($request); $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); var_dump(count($xml_result->getRootElement()->Batch->Statement));