/** * 解析SQL语句 * @access public * @param string $sql SQL指令 * @param boolean $parse 是否需要解析SQL * @return string */ protected function parseSql($sql, $parse) { // 分析表达式 if (true === $parse) { $options = $this->_parseOptions(); $sql = $this->db->parseSql($sql, $options); } elseif (is_array($parse)) { // SQL预处理 $parse = array_map(array($this->db, 'escapeString'), $parse); $sql = vsprintf($sql, $parse); } else { $sql = strtr($sql, array('__TABLE__' => $this->getTableName(), '__PREFIX__' => $this->tablePrefix)); $prefix = $this->tablePrefix; $sql = preg_replace_callback("/__([A-Z0-9_-]+)__/sU", function ($match) use($prefix) { return $prefix . strtolower($match[1]); }, $sql); } $this->db->setModel($this->name); return $sql; }