122        $elems = (array)
$reader->parseInnerTree([
 
  123            '{urn:ietf:params:xml:ns:carddav}prop-filter'  => 
'Sabre\\CardDAV\\Xml\\Filter\\PropFilter',
 
  124            '{urn:ietf:params:xml:ns:carddav}param-filter' => 
'Sabre\\CardDAV\\Xml\\Filter\\ParamFilter',
 
  125            '{urn:ietf:params:xml:ns:carddav}address-data' => 
'Sabre\\CardDAV\\Xml\\Filter\\AddressData',
 
  126            '{DAV:}prop'                                   => 
'Sabre\\Xml\\Element\\KeyValue',
 
  136        if (!is_array($elems)) $elems = [];
 
  138        foreach ($elems as $elem) {
 
  140            switch ($elem[
'name']) {
 
  143                    $newProps[
'properties'] = array_keys($elem[
'value']);
 
  150                    if (!is_null($newProps[
'filters'])) {
 
  153                    if (isset($elem[
'attributes'][
'test'])) {
 
  154                        $newProps[
'test'] = $elem[
'attributes'][
'test'];
 
  155                        if ($newProps[
'test'] !== 
'allof' && $newProps[
'test'] !== 
'anyof') {
 
  156                            throw new BadRequest(
'The "test" attribute must be one of "allof" or "anyof"');
 
  160                    $newProps[
'filters'] = [];
 
  161                    foreach ((array)$elem[
'value'] as $subElem) {
 
  163                            $newProps[
'filters'][] = $subElem[
'value'];
 
  168                    foreach ($elem[
'value'] as $child) {
 
  170                            $newProps[
'limit'] = (int)$child[
'value'];
 
  179        if (is_null($newProps[
'filters'])) {
 
  186            $newProps[
'filters'] = [];
 
  191        foreach ($newProps as 
$key => $value) {
 
An exception for terminatinating execution or to throw for unit testing.
const NS_CARDDAV
xml namespace for CardDAV elements
AddressBookQueryReport request parser.
static xmlDeserialize(Reader $reader)
The deserialize method is called during xml parsing.
The Reader class expands upon PHP's built-in XMLReader.
Implementing the XmlDeserializable interface allows you to use a class as a deserializer for a specif...