$v) { $this->$k = $v; } } public function toArray() { return (array) $this; } /** * Converts value to DateTime object. * @param string key * @param string format * @return DateTime */ public function asDateTime($key, $format = NULL) { $time = $this[$key]; if (!$time instanceof DibiDateTime) { if ((int) $time === 0 && substr((string) $time, 0, 3) !== '00:') { // '', NULL, FALSE, '0000-00-00', ... return NULL; } $time = new DibiDateTime(is_numeric($time) ? date('Y-m-d H:i:s', $time) : $time); } return $format === NULL ? $time : $time->format($format); } /** * Converts value to UNIX timestamp. * @param string key * @return int */ public function asTimestamp($key) { trigger_error(__METHOD__ . '() is deprecated.', E_USER_WARNING); return $this->asDateTime($key, 'U'); } /** * Converts value to boolean. * @param string key * @return mixed */ public function asBool($key) { trigger_error(__METHOD__ . '() is deprecated.', E_USER_WARNING); return $this[$key]; } /** @deprecated */ public function asDate($key, $format = NULL) { trigger_error(__METHOD__ . '() is deprecated.', E_USER_WARNING); if ($format === NULL) { return $this->asTimestamp($key); } else { return $this->asDateTime($key, $format === TRUE ? NULL : $format); } } /********************* interfaces ArrayAccess, Countable & IteratorAggregate ****************d*g**/ final public function count() { return count((array) $this); } final public function getIterator() { return new ArrayIterator($this); } final public function offsetSet($nm, $val) { $this->$nm = $val; } final public function offsetGet($nm) { return $this->$nm; } final public function offsetExists($nm) { return isset($this->$nm); } final public function offsetUnset($nm) { unset($this->$nm); } }