bcdh / laravel-exist-db-client
为 Laravel 5 抽象 eXist-db 的 XML RPC 调用的客户端
v1.0.1
2016-05-11 10:48 UTC
Requires
- php: ~5.5|~7.0
- illuminate/support: 5.*
- pear/xml_rpc2: 1.1.2
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
This package is not auto-updated.
Last update: 2024-09-26 00:44:43 UTC
README
Laravel 5 包,用于抽象化eXist-db的 XML RPC 调用。基于 php-eXist-db-Client。
要求
- Laravel 5
- PHP 5.5 或 PHP 7
- PEAR 1.10
sudo apt-get install php-pear sudo pear channel-update pear.php.net
- PHP XSLT 扩展
sudo apt-get install php5-xsl
安装
####1. 将服务提供者添加到 config/app.php
BCDH\ExistDbClient\ExistDbServiceProvider::class
####2. 发布你的配置文件
php artisan vendor:publish
####3. 在 config/exist-db.php 中编辑你的连接凭据
[
'protocol' => "http",
'user' => "admin",
'password' => "admin",
'host' => "localhost",
'port' => 8080,
'path' => "/exist/xmlrpc/",
]
用法
use BCDH\ExistDbClient\ExistDbClient; $connection = new ExistDbClient(); $stmt = $connection->prepareQuery('for $someNode in collection("/SomeCollection")/someNodeName[./somePredicateAttribute=$someValueToBeBound] return $someNode'); $stmt->setSimpleXMLReturnType(); $stmt->bindVariable('someValueToBeBound', '5'); $resultPool = $stmt->execute(); $result = $resultPool->getAllResults(); foreach($result as $xml) { var_dump($xml->somePredicateAttribute); }
返回类型
-
Query::setStringReturnType() 的结果是 DOMElement 的实例
-
Query::setSimpleXMLReturnType() 的结果是 SimpleXMLElement 的实例
-
Query::setDomXMLReturnType() 的结果是字符串
获取结果字段
- DomXmlResult
$document = $result->getDocument(); $title = $doc->getElementsByTagName('TITLE')->item(0)->nodeValue;
- SimpleXML
$document = $result->getDocument(); $title = $doc->TITLE;
获取结果属性
- DomXmlResult
$document = $result->getDocument(); $isFavorite = $doc->hasAttribute('favourite');
- SimpleXML
$document = $result->getDocument(); $attributes = $document->attributes(); $isFavorite = isset($attributes['favourite']);
XLS 转换
- 单一结果(DomXmlResult|SimpleXmlResult)
$resultPool = $stmt->execute(); $results = $resultPool->getAllResults(); $res = $results[0]; $html = $res->transform(__DIR__.'/xml/cd_catalog_simplified.xsl');
- 结果集
$resultPool = $stmt->execute(); $results = $resultPool->getAllResults(); $rootTagName = 'catalog'; $html = $resultPool->transform($rootTagName, $results, __DIR__.'/xml/cd_catalog_simplified.xsl');