This repository has been archived on 2025-02-26. You can view files and clone it, but cannot push or open issues or pull requests.
szurubooru/src/Sql/SqlExpression.php
2014-02-23 10:00:21 +01:00

42 lines
882 B
PHP

<?php
abstract class SqlExpression
{
abstract public function getAsString();
protected $bindings = [];
protected $subExpressions = [];
private function bind($key, $val)
{
$this->bindings[$key] = $val;
return $this;
}
public function getBindings()
{
$bindings = $this->bindings;
foreach ($this->subExpressions as $subExpression)
$bindings = array_merge($bindings, $subExpression->getBindings());
return $bindings;
}
public function attachExpression($object)
{
if ($object instanceof SqlBinding)
{
$expr = new SqlStringExpression($object->getName());
$expr->bind($object->getName(), $object->getValue());
$this->subExpressions []= $expr;
return $expr;
}
else if ($object instanceof SqlExpression)
{
$this->subExpressions []= $object;
return $object;
}
else
{
return new SqlStringExpression((string) $object);
}
}
}