Exemplo n.º 1
0
 /**
  * Default method for rendering objects into their values equivalent
  *
  * Override on app level for additional classes:
  *
  *     public static function object_values($object)
  *     {
  *         if ($object instanceof SomeClass)
  *             return $object->some_method();
  *
  *         return parent::object_values($object);
  *     }
  *
  * @param   object  $object
  * @return  mixed   Value to encode (e.g. array, string, int)
  */
 public static function object_values($object)
 {
     /**
      * JsonSerializable
      * @see http://php.net/JsonSerializable
      */
     if ($object instanceof JsonSerializable) {
         return $object->jsonSerialize();
     }
     if ($object instanceof ORM or $object instanceof AutoModeler) {
         return $object->as_array();
     }
     if ($object instanceof ORM_Validation_Exception) {
         return $object->errors('');
     }
     if ($object instanceof Database_Result) {
         $items = array();
         foreach ($object as $result) {
             $items[] = JSend::object_values($result);
         }
         return $items;
     }
     if ($object instanceof ArrayObject) {
         return $object->getArrayCopy();
     }
     if (method_exists($object, '__toString')) {
         return (string) $object;
     }
     // If no matches, return the whole object
     return $object;
 }