public function deflate($value, ArgumentArray $args = NULL)
{
if ($this->alwaysBindValues) {
if ($value instanceof Raw) {
return $value->__toString();
} elseif ($value instanceof Bind) {
if ($args) {
$args->bind($value);
}
return $value->getMarker();
} elseif ($value instanceof ParamMarker) {
if ($args) {
$args->bind(new Bind($value->getMarker(), NULL));
}
return $value->getMarker();
} else {
$bind = $this->allocateBind($value);
if ($args) {
$args->bind($bind);
}
return $bind->getMarker();
}
}
if ($value === NULL) {
return 'NULL';
} elseif ($value === true) {
return 'TRUE';
} elseif ($value === false) {
return 'FALSE';
} elseif (is_integer($value)) {
return intval($value);
} elseif (is_float($value)) {
return floatval($value);
} elseif (is_string($value)) {
return $this->quote($value);
} elseif (is_callable($value)) {
return call_user_func($value);
} elseif (is_object($value)) {
if ($value instanceof Bind) {
if ($args) {
$args->bind($value);
}
if ($this->paramMarkerType === self::QMARK_PARAM_MARKER) {
return '?';
} elseif ($this->paramMarkerType === self::NAMED_PARAM_MARKER) {
return $value->getMarker();
} else {
return $value->getMarker();
}
} elseif ($value instanceof ParamMarker) {
if ($args) {
$args->bind(new Bind($value->getMarker(), NULL));
}
if ($this->paramMarkerType === self::QMARK_PARAM_MARKER) {
return '?';
} elseif ($this->paramMarkerType === self::NAMED_PARAM_MARKER) {
return $value->getMarker();
} else {
return $value->getMarker();
}
return $value->getMarker();
} elseif ($value instanceof Unknown) {
return 'UNKNOWN';
} else {
if ($value instanceof DateTime) {
// convert DateTime object into string
// return $this->quote($value->format(DateTime::ISO8601));
return $this->quote($value->format(DateTime::ATOM));
// sqlite use ATOM format
} elseif ($value instanceof ToSqlInterface) {
return $value->toSql($this, $args);
} elseif ($value instanceof Raw) {
return $value->__toString();
} else {
throw new LogicException('Unsupported class: ' . get_class($value));
}
}
} elseif (is_array($value)) {
// error_log("LazyRecord: deflating array type value", 0);
return $value[0];
} else {
throw new LogicException('BaseDriver::deflate: Unsupported variable type');
}
return $value;
}