%PDF- %PDF-
| Direktori : /www/varak.net/losik.varak.net/vendor/dibi/dibi/src/Dibi/ |
| Current File : /www/varak.net/losik.varak.net/vendor/dibi/dibi/src/Dibi/Row.php |
<?php
/**
* This file is part of the Dibi, smart database abstraction layer (https://dibiphp.com)
* Copyright (c) 2005 David Grudl (https://davidgrudl.com)
*/
declare(strict_types=1);
namespace Dibi;
/**
* Result set single row.
*/
#[\AllowDynamicProperties]
class Row implements \ArrayAccess, \IteratorAggregate, \Countable
{
public function __construct(array $arr)
{
foreach ($arr as $k => $v) {
$this->$k = $v;
}
}
public function toArray(): array
{
return (array) $this;
}
/**
* Converts value to DateTime object.
* @return DateTime|string|null
*/
public function asDateTime(string $key, ?string $format = null)
{
$time = $this[$key];
if (!$time instanceof DateTime) {
if (!$time || substr((string) $time, 0, 7) === '0000-00') { // '', null, false, '0000-00-00', ...
return null;
}
$time = new DateTime($time);
}
return $format === null ? $time : $time->format($format);
}
public function __get(string $key)
{
$hint = Helpers::getSuggestion(array_keys((array) $this), $key);
trigger_error("Attempt to read missing column '$key'" . ($hint ? ", did you mean '$hint'?" : '.'), E_USER_NOTICE);
}
public function __isset(string $key): bool
{
return false;
}
/********************* interfaces ArrayAccess, Countable & IteratorAggregate ****************d*g**/
final public function count(): int
{
return count((array) $this);
}
final public function getIterator(): \ArrayIterator
{
return new \ArrayIterator($this);
}
final public function offsetSet($nm, $val): void
{
$this->$nm = $val;
}
#[\ReturnTypeWillChange]
final public function offsetGet($nm)
{
return $this->$nm;
}
final public function offsetExists($nm): bool
{
return isset($this->$nm);
}
final public function offsetUnset($nm): void
{
unset($this->$nm);
}
}