【发布时间】:2018-09-24 16:43:44
【问题描述】:
我来自另一个开发人员编写的一些代码。这是一个php数据库抽象层,我正在研究代码,有些看不懂。
class QueryBuilderBase
{
/*
* The builder SQLStates.
*/
const STATE_DIRTY = 0;
const STATE_CLEAN = 1;
/**
* @var array The array of SQL parts collected.
*/
private $SQLBlocks = [
'select' => [],
'from' => [],
'join' => [],
'set' => [],
'where' => null,
'groupBy' => [],
'having' => null,
'orderBy' => [],
'values' => [],
'limit' => null
];
/**
*
* Either appends to or replaces a single, generic query part.
*
* The available parts are: 'select', 'from', 'set', 'where',
* 'groupBy', 'having' and 'orderBy'.
*
* @param $sqlPartName
* @param $sqlPart
* @param bool $append
* @return $this
*/
private function addSQLBlock($sqlPartName, $sqlPart, $append = false)
{
$isArray = is_array($sqlPart);
$isMultiple = is_array($this->SQLBlocks[$sqlPartName]);
if ($isMultiple && !$isArray)
$sqlPart = array($sqlPart);
$this->SQLState = self::STATE_DIRTY;
.....(some other code that's not relevant)
}
}
所以请谁能告诉我他在做什么以及 STATE_CLEAN 和 STATE_DIRTY 常量的目的是什么 谢谢。
【问题讨论】:
-
真的很难准确判断,但从 STATE_DIRTY/STATE_CLEAN 看起来像是某种缓存机制,其中底层数据已修改但尚未保存到数据库中,所以 STATE_DIRTY
-
你知道`SQLState`属性吗?
-
是的,几乎所有 dbs 都使用 SQLSTATE 来表示各种事件,但它们的代码和使用方式各不相同。
-
是的,它是某种异常值,可以是 0/1。
-
顺便说一句,这是哪个 dbms?
标签: php sql database-abstraction