File: /var/www/vhost/disk-apps/magento.bikenow.co/vendor/laminas/laminas-db/src/Sql/Sql.php
<?php
/**
* @see https://github.com/laminas/laminas-db for the canonical source repository
* @copyright https://github.com/laminas/laminas-db/blob/master/COPYRIGHT.md
* @license https://github.com/laminas/laminas-db/blob/master/LICENSE.md New BSD License
*/
namespace Laminas\Db\Sql;
use Laminas\Db\Adapter\AdapterInterface;
use Laminas\Db\Adapter\Driver\StatementInterface;
use Laminas\Db\Adapter\Platform\PlatformInterface;
class Sql
{
/** @var AdapterInterface */
protected $adapter = null;
/** @var string|array|TableIdentifier */
protected $table = null;
/** @var Platform\Platform */
protected $sqlPlatform = null;
/**
* @param AdapterInterface $adapter
* @param null|string|array|TableIdentifier $table
* @param null|Platform\AbstractPlatform $sqlPlatform @deprecated since version 3.0
*/
public function __construct(AdapterInterface $adapter, $table = null, Platform\AbstractPlatform $sqlPlatform = null)
{
$this->adapter = $adapter;
if ($table) {
$this->setTable($table);
}
$this->sqlPlatform = $sqlPlatform ?: new Platform\Platform($adapter);
}
/**
* @return null|\Laminas\Db\Adapter\AdapterInterface
*/
public function getAdapter()
{
return $this->adapter;
}
public function hasTable()
{
return ($this->table !== null);
}
/**
* @param string|array|TableIdentifier $table
* @return self Provides a fluent interface
* @throws Exception\InvalidArgumentException
*/
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 $statement
* @param AdapterInterface $adapter
*
* @return StatementInterface
*/
public function prepareStatementForSqlObject(
PreparableSqlInterface $sqlObject,
StatementInterface $statement = null,
AdapterInterface $adapter = null
) {
$adapter = $adapter ?: $this->adapter;
$statement = $statement ?: $adapter->getDriver()->createStatement();
return $this->sqlPlatform->setSubject($sqlObject)->prepareStatement($adapter, $statement);
}
/**
* Get sql string using platform or sql object
*
* @param SqlInterface $sqlObject
* @param PlatformInterface|null $platform
*
* @return string
*
* @deprecated Deprecated in 2.4. Use buildSqlString() instead
*/
public function getSqlStringForSqlObject(SqlInterface $sqlObject, PlatformInterface $platform = null)
{
$platform = ($platform) ?: $this->adapter->getPlatform();
return $this->sqlPlatform->setSubject($sqlObject)->getSqlString($platform);
}
/**
* @param SqlInterface $sqlObject
* @param AdapterInterface $adapter
*
* @return string
*
* @throws Exception\InvalidArgumentException
*/
public function buildSqlString(SqlInterface $sqlObject, AdapterInterface $adapter = null)
{
return $this
->sqlPlatform
->setSubject($sqlObject)
->getSqlString($adapter ? $adapter->getPlatform() : $this->adapter->getPlatform());
}
}