Exemple #1
0
 /**
  * starts join
  * @return \qinq\Object\Query\Join
  */
 public function execute()
 {
     $collection = $this->getCollection();
     $fn = $this->getCallback();
     $arr = $collection->toArray();
     $args = $this->getArguments();
     if (empty($fn) && count($args) === 1) {
         $this->group = [new qinq\Collection($arr), new qinq\Collection($args[0])];
     } elseif (!empty($fn)) {
         $arr1 = array_filter($arr, $fn);
         $arr2 = array_diff($arr, $arr1);
         $this->group = [new qinq\Collection($arr), new qinq\Collection($arr2)];
     }
     if (qtil\ArrayUtil::isIterable($this->group) && qtil\ArrayUtil::isMultiObject($this->group)) {
         return $this;
     }
 }
Exemple #2
0
 /**
  * Default XML query execution path
  * @return mixed
  */
 function execute()
 {
     $result = parent::execute();
     if (empty($result)) {
         return null;
     }
     $reduce = function ($val) {
         if (is_scalar($val)) {
             return $val;
         } elseif ($val instanceof \DOMDocument) {
             return $val;
         } elseif ($val instanceof \SimpleXMLElement) {
             return $val;
         }
         return $val;
     };
     if (empty($this['xpath'])) {
         return $reduce($result[0]);
     }
     if (qtil\ArrayUtil::isMultiObject($result->toArray()) && count($result) == 1) {
         $val = $result[$result->keys()[0]];
         return new qinq\Collection($val);
     }
     return $result->filter();
 }