20250820 v1.0.2-b2
This commit is contained in:
@@ -291,12 +291,12 @@
|
||||
* @param string $className Имя класса объекта.
|
||||
* @param DBOperation $operation Операция.
|
||||
*
|
||||
* @return object|null Экземпляр класса объекта или <code>null</code>, если ошибка.
|
||||
* @return IDBItem|null Экземпляр класса объекта или <code>null</code>, если ошибка.
|
||||
*/
|
||||
private function RestoreItem (array $row, string $className, DBOperation $operation): ?object
|
||||
private function RestoreItem (array $row, string $className, DBOperation $operation): ?IDBItem
|
||||
{
|
||||
// Если целевой класс не реализует интерфейс IDBItem
|
||||
if (in_array(IDBItem::class, class_implements($className)))
|
||||
if (!is_a($className, IDBItem::class, true))
|
||||
// - то прерываем и возвращаем null
|
||||
return null;
|
||||
|
||||
@@ -385,8 +385,12 @@
|
||||
*/
|
||||
private function PrepareColumn (array $columns): array
|
||||
{
|
||||
// Получаю знаки открытия параметра и закрытия его
|
||||
[$signOpen, $signClose] = DBDriver::GetSigns($this->Config->Driver);
|
||||
|
||||
// Возвращаю результат
|
||||
return array_map(
|
||||
function ($item)
|
||||
function ($item) use ($signOpen, $signClose)
|
||||
{
|
||||
// Результирующая строка
|
||||
$result = "";
|
||||
@@ -399,18 +403,18 @@
|
||||
// - последний символ
|
||||
$lastLetter = substr($item, -1);
|
||||
|
||||
// - если первый символ не $this->DBSignOpen
|
||||
if ($firstLetter !== $this->DBSignOpen)
|
||||
// - если первый символ не $signOpen
|
||||
if ($firstLetter !== $signOpen)
|
||||
// -- то добавляем
|
||||
$result .= $this->DBSignOpen;
|
||||
$result .= $signOpen;
|
||||
|
||||
// - добавляем строку
|
||||
$result .= $item;
|
||||
|
||||
// - если последний символ не $this->DBSignClose
|
||||
if ($lastLetter !== $this->DBSignClose)
|
||||
// - если последний символ не $signClose
|
||||
if ($lastLetter !== $signClose)
|
||||
// -- то добавляем
|
||||
$result .= $this->DBSignClose;
|
||||
$result .= $signClose;
|
||||
}
|
||||
|
||||
// Возвращаем результат
|
||||
@@ -438,13 +442,13 @@
|
||||
* @var string $sql_where where-запрос SQL
|
||||
* @var array $params Параметры и их значения (для защиты от SQL-инъекции)
|
||||
*/
|
||||
[$sql_where, $params] = $whereConditions->Build();
|
||||
[$sql_where, $params] = $whereConditions->Build($this->Config->Driver);
|
||||
|
||||
// Колонки
|
||||
$sql_columns = count($columns) > 0 ? implode(', ', $this->PrepareColumn($columns)) : "*";
|
||||
|
||||
// Создаю запрос
|
||||
$sql = "SELECT $sql_columns FROM $this->DBSignOpen$table$this->DBSignClose";
|
||||
$sql = "SELECT $sql_columns FROM $table";
|
||||
|
||||
// Если заданы where-параметры
|
||||
if ($whereConditions->Count() > 0)
|
||||
@@ -464,9 +468,13 @@
|
||||
*/
|
||||
private function PrepareTableName (string $table): string
|
||||
{
|
||||
// Получаю знаки открытия параметра и закрытия его
|
||||
[$signOpen, $signClose] = DBDriver::GetSigns($this->Config->Driver);
|
||||
|
||||
// Возвращаю результат
|
||||
return match ($this->Config->Driver) {
|
||||
DBDriver::MySQL, DBDriver::SQLite, DBDriver::OracleDB, DBDriver::PostgreSQL => $this->DBSignOpen
|
||||
. $table . $this->DBSignClose,
|
||||
DBDriver::MySQL, DBDriver::SQLite, DBDriver::OracleDB, DBDriver::PostgreSQL =>
|
||||
"$signOpen$table$signClose",
|
||||
DBDriver::MSSQL => "[dbo].[$table]"
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user