use \pq\Query\Expressible;
-class Cell extends Expressible
+class Cell extends Expressible implements \ArrayAccess
{
/**
* @var \pq\Gateway\Row
*/
protected $row;
- /**
- * @var string
- */
- protected $name;
-
/**
* @var bool
*/
* @param bool $dirty
*/
function __construct(Row $row, $name, $data, $dirty = false) {
- parent::__construct($data);
+ parent::__construct($name, $data);
$this->row = $row;
- $this->name = $name;
$this->dirty = $dirty;
}
* @return bool
*/
function isDirty() {
- return $this->dirty;
+ return (bool) $this->dirty;
}
/**
* @return \pq\Gateway\Cell
*/
function mod($data, $op = null) {
+ if (is_string($data)) {
+ $data = $this->row->getTable()->getConnection()->quote($data);
+ }
parent::mod($data, $op);
$this->dirty = true;
return $this;
}
+ function offsetGet($o) {
+ if (isset($this->data) && !is_array($this->data)) {
+ throw new \UnexpectedValueException("Cell data is not an array");
+ }
+ return $this->data[$o];
+ }
+
+ function offsetSet($o, $v) {
+ if (isset($this->data) && !is_array($this->data)) {
+ throw new \UnexpectedValueException("Cell data is not an array");
+ }
+ if (isset($o)) {
+ $this->data[$o] = $v;
+ } else {
+ $this->data[] = $v;
+ }
+ $this->dirty = true;
+ }
+
+ function offsetExists($o) {
+ if (isset($this->data) && !is_array($this->data)) {
+ throw new \UnexpectedValueException("Cell data is not an array");
+ }
+ return isset($this->data[$o]);
+ }
+
+ function offsetUnset($o) {
+ if (isset($this->data) && !is_array($this->data)) {
+ throw new \UnexpectedValueException("Cell data is not an array");
+ }
+ unset($this->data[$o]);
+ $this->dirty = true;
+ }
}