/** * 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; }