adapter = $adapter; if ($table) { $this->setTable($table); } $this->sqlPlatform = ($sqlPlatform) ?: new Platform\Platform($adapter); } /** * @return null|\Zend\Db\Adapter\AdapterInterface */ public function getAdapter() { return $this->adapter; } public function hasTable() { return ($this->table != null); } public function setTable($table) { if (is_string($table) || is_array($table) || $table instanceof TableIdentifier) { $this->table = $table; } else { throw new Exception\InvalidArgumentException('Table must be a string, array or instance of TableIdentifier.'); } return $this; } public function getTable() { return $this->table; } public function getSqlPlatform() { return $this->sqlPlatform; } public function select($table = null) { if ($this->table !== null && $table !== null) { throw new Exception\InvalidArgumentException(sprintf( 'This Sql object is intended to work with only the table "%s" provided at construction time.', $this->table )); } return new Select(($table) ?: $this->table); } public function insert($table = null) { if ($this->table !== null && $table !== null) { throw new Exception\InvalidArgumentException(sprintf( 'This Sql object is intended to work with only the table "%s" provided at construction time.', $this->table )); } return new Insert(($table) ?: $this->table); } public function update($table = null) { if ($this->table !== null && $table !== null) { throw new Exception\InvalidArgumentException(sprintf( 'This Sql object is intended to work with only the table "%s" provided at construction time.', $this->table )); } return new Update(($table) ?: $this->table); } public function delete($table = null) { if ($this->table !== null && $table !== null) { throw new Exception\InvalidArgumentException(sprintf( 'This Sql object is intended to work with only the table "%s" provided at construction time.', $this->table )); } return new Delete(($table) ?: $this->table); } /** * @param PreparableSqlInterface $sqlObject * @param StatementInterface|null $statement * @return StatementInterface */ public function prepareStatementForSqlObject(PreparableSqlInterface $sqlObject, StatementInterface $statement = null) { $statement = ($statement) ?: $this->adapter->getDriver()->createStatement(); if ($this->sqlPlatform) { $this->sqlPlatform->setSubject($sqlObject); $this->sqlPlatform->prepareStatement($this->adapter, $statement); } else { $sqlObject->prepareStatement($this->adapter, $statement); } return $statement; } public function getSqlStringForSqlObject(SqlInterface $sqlObject, PlatformInterface $platform = null) { $platform = ($platform) ?: $this->adapter->getPlatform(); if ($this->sqlPlatform) { $this->sqlPlatform->setSubject($sqlObject); $sqlString = $this->sqlPlatform->getSqlString($platform); } else { $sqlString = $sqlObject->getSqlString($platform); } return $sqlString; } }