namespace pq\Gateway;
-use \pq\Query\Expr;
+use \pq\Query\Expressible;
-class Cell
+class Cell extends Expressible
{
/**
* @var \pq\Gateway\Row
*/
protected $name;
- /**
- * @var mixed
- */
- protected $data;
-
/**
* @var bool
*/
* @param bool $dirty
*/
function __construct(Row $row, $name, $data, $dirty = false) {
+ parent::__construct($data);
$this->row = $row;
$this->name = $name;
- $this->data = $data;
$this->dirty = $dirty;
}
- /**
- * Get value as string
- * @return string
- */
- function __toString() {
- return (string) $this->data;
- }
-
- /**
- * Test whether the value is an unevaluated expression
- * @return bool
- */
- function isExpr() {
- return $this->data instanceof Expr;
- }
-
/**
* Check whether the cell has been modified
* @return bool
}
/**
- * Get value
- * @return mixed
- */
- function get() {
- return $this->data;
- }
-
- /**
- * Modify the value in this cell
+ * Set the value
* @param mixed $data
- * @param string $op a specific operator
* @return \pq\Gateway\Cell
*/
- function mod($data, $op = null) {
- if (!($this->data instanceof Expr)) {
- $this->data = new Expr($this->name);
- }
-
- if ($data instanceof Expr) {
- $this->data->add($data);
- } elseif (!isset($op) && is_numeric($data)) {
- $this->data->add(new Expr("+ $data"));
- } else {
- $data = $this->row->getTable()->getConnection()->quote($data);
- $this->data->add(new Expr("%s %s", isset($op) ? $op : "||", $data));
- }
-
+ function set($data) {
+ parent::set($data);
$this->dirty = true;
-
return $this;
}
/**
- * Set the value in this cell
+ * Modify the value in this cell
* @param mixed $data
+ * @param string $op a specific operator
* @return \pq\Gateway\Cell
*/
- function set($data) {
- $this->data = $data;
+ function mod($data, $op = null) {
+ parent::mod($data, $op);
$this->dirty = true;
return $this;
}
+
}