1: <?php
2:
3: 4: 5: 6:
7:
8: namespace Nette\Database;
9:
10: use Nette;
11:
12:
13: 14: 15:
16: class Row extends Nette\Utils\ArrayHash implements IRow
17: {
18: public function __get($key)
19: {
20: $hint = Nette\Utils\ObjectMixin::getSuggestion(array_keys((array) $this), $key);
21: throw new Nette\MemberAccessException("Cannot read an undeclared column '$key'" . ($hint ? ", did you mean '$hint'?" : '.'));
22: }
23:
24:
25: 26: 27: 28: 29:
30: public function offsetGet($key)
31: {
32: if (is_int($key)) {
33: $arr = array_slice((array) $this, $key, 1);
34: if (!$arr) {
35: throw new Nette\MemberAccessException("Cannot read an undeclared column '$key'.");
36: }
37: return current($arr);
38: }
39: return $this->$key;
40: }
41:
42:
43: 44: 45: 46: 47:
48: public function offsetExists($key)
49: {
50: if (is_int($key)) {
51: return (bool) current(array_slice((array) $this, $key, 1));
52: }
53: return parent::offsetExists($key);
54: }
55: }
56: