本文整理汇总了PHP中Sabre\Xml\Reader::parseGetElements方法的典型用法代码示例。如果您正苦于以下问题:PHP Reader::parseGetElements方法的具体用法?PHP Reader::parseGetElements怎么用?PHP Reader::parseGetElements使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sabre\Xml\Reader
的用法示例。
在下文中一共展示了Reader::parseGetElements方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: xmlDeserialize
/**
* The deserialize method is called during xml parsing.
*
* This method is called statictly, this is because in theory this method
* may be used as a type of constructor, or factory method.
*
* Often you want to return an instance of the current class, but you are
* free to return other data as well.
*
* You are responsible for advancing the reader to the next element. Not
* doing anything will result in a never-ending loop.
*
* If you just want to skip parsing for this element altogether, you can
* just call $reader->next();
*
* $reader->parseInnerTree() will parse the entire sub-tree, and advance to
* the next element.
*
* @param Reader $reader
* @return mixed
*/
static function xmlDeserialize(Reader $reader)
{
$elems = $reader->parseGetElements(['{' . Plugin::NS_CALENDARSERVER . '}set' => 'Sabre\\Xml\\Element\\KeyValue', '{' . Plugin::NS_CALENDARSERVER . '}remove' => 'Sabre\\Xml\\Element\\KeyValue']);
$sharees = [];
foreach ($elems as $elem) {
switch ($elem['name']) {
case '{' . Plugin::NS_CALENDARSERVER . '}set':
$sharee = $elem['value'];
$sumElem = '{' . Plugin::NS_CALENDARSERVER . '}summary';
$commonName = '{' . Plugin::NS_CALENDARSERVER . '}common-name';
$properties = [];
if (isset($sharee[$commonName])) {
$properties['{DAV:}displayname'] = $sharee[$commonName];
}
$access = array_key_exists('{' . Plugin::NS_CALENDARSERVER . '}read-write', $sharee) ? \Sabre\DAV\Sharing\Plugin::ACCESS_READWRITE : \Sabre\DAV\Sharing\Plugin::ACCESS_READ;
$sharees[] = new Sharee(['href' => $sharee['{DAV:}href'], 'properties' => $properties, 'access' => $access, 'comment' => isset($sharee[$sumElem]) ? $sharee[$sumElem] : null]);
break;
case '{' . Plugin::NS_CALENDARSERVER . '}remove':
$sharees[] = new Sharee(['href' => $elem['value']['{DAV:}href'], 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_NOACCESS]);
break;
}
}
return new self($sharees);
}
示例2: repeatingElements
/**
* This deserializer helps you deserialize xml structures that look like
* this:
*
* <collection>
* <item>...</item>
* <item>...</item>
* <item>...</item>
* </collection>
*
* Many XML documents use patterns like that, and this deserializer
* allow you to get all the 'items' as an array.
*
* In that previous example, you would register the deserializer as such:
*
* $reader->elementMap['{}collection'] = function($reader) {
* return repeatingElements($reader, '{}item');
* }
*
* The repeatingElements deserializer simply returns everything as an array.
*
* @param Reader $reader
* @param string $childElementName Element name in clark-notation
* @return array
*/
function repeatingElements(Reader $reader, $childElementName)
{
if ($childElementName[0] !== '{') {
$childElementName = '{}' . $childElementName;
}
$result = [];
foreach ($reader->parseGetElements() as $element) {
if ($element['name'] === $childElementName) {
$result[] = $element['value'];
}
}
return $result;
}