This commit is contained in:
2025-08-07 18:06:55 +03:00
parent eeea57209e
commit d132832d28
34 changed files with 1231 additions and 286 deletions

View File

@@ -38,7 +38,13 @@
if (count($ignoredOperations) === 0)
// - то по умолчанию игнорируем все операции
$ignoredOperations = [
DBOperation::Insert, DBOperation::Get, DBOperation::Update, DBOperation::Delete, DBOperation::Count
DBOperation::Insert,
DBOperation::Get,
DBOperation::Update,
DBOperation::Delete,
DBOperation::Count,
DBOperation::CreateTable,
DBOperation::DropTable
];
// Инициализируем массив

View File

@@ -6,10 +6,10 @@
namespace goodboyalex\php_db_components_pack\classes\tm_drivers;
use goodboyalex\php_components_pack\classes\ObjectArray;
use goodboyalex\php_db_components_pack\classes\DataBaseColumn;
use goodboyalex\php_db_components_pack\enums\DBDriver;
use goodboyalex\php_db_components_pack\enums\DBType;
use goodboyalex\php_db_components_pack\interfaces\ITableManager;
use goodboyalex\php_db_components_pack\models\DataBaseColumn;
use PDO;
/**

View File

@@ -6,10 +6,10 @@
namespace goodboyalex\php_db_components_pack\classes\tm_drivers;
use goodboyalex\php_components_pack\classes\ObjectArray;
use goodboyalex\php_db_components_pack\classes\DataBaseColumn;
use goodboyalex\php_db_components_pack\enums\DBDriver;
use goodboyalex\php_db_components_pack\enums\DBType;
use goodboyalex\php_db_components_pack\interfaces\ITableManager;
use goodboyalex\php_db_components_pack\models\DataBaseColumn;
use PDO;
/**

View File

@@ -6,10 +6,10 @@
namespace goodboyalex\php_db_components_pack\classes\tm_drivers;
use goodboyalex\php_components_pack\classes\ObjectArray;
use goodboyalex\php_db_components_pack\classes\DataBaseColumn;
use goodboyalex\php_db_components_pack\enums\DBDriver;
use goodboyalex\php_db_components_pack\enums\DBType;
use goodboyalex\php_db_components_pack\interfaces\ITableManager;
use goodboyalex\php_db_components_pack\models\DataBaseColumn;
use PDO;
use PDOException;

View File

@@ -6,10 +6,10 @@
namespace goodboyalex\php_db_components_pack\classes\tm_drivers;
use goodboyalex\php_components_pack\classes\ObjectArray;
use goodboyalex\php_db_components_pack\classes\DataBaseColumn;
use goodboyalex\php_db_components_pack\enums\DBDriver;
use goodboyalex\php_db_components_pack\enums\DBType;
use goodboyalex\php_db_components_pack\interfaces\ITableManager;
use goodboyalex\php_db_components_pack\models\DataBaseColumn;
use PDO;
use PDOException;

View File

@@ -6,10 +6,10 @@
namespace goodboyalex\php_db_components_pack\classes\tm_drivers;
use goodboyalex\php_components_pack\classes\ObjectArray;
use goodboyalex\php_db_components_pack\classes\DataBaseColumn;
use goodboyalex\php_db_components_pack\enums\DBDriver;
use goodboyalex\php_db_components_pack\enums\DBType;
use goodboyalex\php_db_components_pack\interfaces\ITableManager;
use goodboyalex\php_db_components_pack\models\DataBaseColumn;
use PDO;
use PDOException;

View File

@@ -3,7 +3,7 @@
namespace goodboyalex\php_db_components_pack\interfaces;
use goodboyalex\php_components_pack\classes\ObjectArray;
use goodboyalex\php_db_components_pack\classes\DataBaseColumn;
use goodboyalex\php_db_components_pack\models\DataBaseColumn;
use PDO;
/**
@@ -47,7 +47,7 @@
/**
* Разбирает столбец для SQL-запроса создания.
*
* @param DataBaseColumn $column Столбец таблицы.
* @param \goodboyalex\php_db_components_pack\models\DataBaseColumn $column Столбец таблицы.
*
* @return string SQL-представление столбца.
*/

View File

@@ -1,9 +1,8 @@
<?php
namespace goodboyalex\php_db_components_pack\classes;
namespace goodboyalex\php_db_components_pack\models;
use Closure;
use goodboyalex\php_components_pack\extensions\StringExtension;
/**
* Класс свойства класса, реализующего интерфейс IDBItem.
@@ -25,11 +24,6 @@
*/
public mixed $Value;
/**
* @var string $FieldName Имя поля в таблице БД.
*/
public string $FieldName;
/**
* @var DataBaseColumn $Column Информация об ячейке.
*/
@@ -60,14 +54,13 @@
*
* @param string $name Имя свойства.
* @param mixed|null $value Значение свойства (ещё не конвертированное!).
* @param string $fieldName Имя поля в таблице БД.
* @param DataBaseColumn $column Информация об ячейке.
* @param bool $isIgnored Признак того, что свойство игнорируется при сохранении в / загрузке из БД.
* @param callable|null $ConvertToDB Конвертер значения свойства в значение поля БД.
* @param Closure|null $ConvertFromDB Конвертер значения поля БД в значение свойства.
* @param Closure|null $Compare Функция сравнения значений свойства.
*/
public function __construct (string $name = '', mixed $value = null, string $fieldName = '',
public function __construct (string $name = '', mixed $value = null,
DataBaseColumn $column = new DataBaseColumn(), bool $isIgnored = false, ?callable $ConvertToDB = null,
?Closure $ConvertFromDB = null, ?Closure $Compare = null)
{
@@ -76,8 +69,7 @@
$this->Name = $name;
// - установка значения свойства (ещё не конвертированного)
$this->Value = $value;
// - установка имени поля в таблице БД
$this->FieldName = StringExtension::IsNullOrWhitespace($fieldName) ? $name : $fieldName;
// - установка свойств столбца
$this->Column = $column;
// - установка признака того, что свойство игнорируется при сохранении в / загрузке из БД

View File

@@ -1,8 +1,9 @@
<?php
namespace goodboyalex\php_db_components_pack\classes;
namespace goodboyalex\php_db_components_pack\models;
use goodboyalex\php_components_pack\classes\Tuple;
use goodboyalex\php_db_components_pack\classes\ConditionBuilder;
use goodboyalex\php_db_components_pack\enums\DBType;
/**

View File

@@ -23,11 +23,11 @@
use goodboyalex\php_db_components_pack\attributes\PrimaryKey;
use goodboyalex\php_db_components_pack\attributes\Unique;
use goodboyalex\php_db_components_pack\classes\ConditionBuilder;
use goodboyalex\php_db_components_pack\classes\DataBaseColumn;
use goodboyalex\php_db_components_pack\classes\DBItemProperty;
use goodboyalex\php_db_components_pack\enums\DBOperation;
use goodboyalex\php_db_components_pack\enums\DBType;
use goodboyalex\php_db_components_pack\interfaces\IDBItem;
use goodboyalex\php_db_components_pack\models\DataBaseColumn;
use goodboyalex\php_db_components_pack\models\DBItemProperty;
use PDO;
use ReflectionClass;
use ReflectionException;
@@ -235,7 +235,7 @@
// - создаю объект свойства
$item = new DBItemProperty($key, $value, $fieldName, $columnHeader, $isIgnore, $converterToDB,
$item = new DBItemProperty($key, $value, $columnHeader, $isIgnore, $converterToDB,
$converterFromDB, $compareFunc);
// - добавляю в массив
@@ -294,7 +294,7 @@
continue;
// - получаю значение имени поля
$fieldName = $property->FieldName;
$fieldName = $property->Column->Name;
// - преобразую тип
$value = call_user_func($property->ConvertToDB, $property->Value);
@@ -343,10 +343,10 @@
continue;
// - получаю имя поля
$fieldName = $property->FieldName;
$fieldName = $property->Column->Name;
// - добавляю в массив отношений
$propertiesRelationship[$fieldName] = [$property->Name, $property->ConverterFromDB];
$propertiesRelationship[$fieldName] = [$property->Name, $property->ConvertFromDB];
}
// Проходим элементы массива из БД

View File

@@ -8,7 +8,6 @@
use Exception;
use goodboyalex\php_components_pack\classes\ObjectArray;
use goodboyalex\php_db_components_pack\classes\DBItemProperty;
use goodboyalex\php_db_components_pack\classes\tm_drivers\MSSQLTableManager;
use goodboyalex\php_db_components_pack\classes\tm_drivers\MySQLTableManager;
use goodboyalex\php_db_components_pack\classes\tm_drivers\OracleDBTableManager;
@@ -17,6 +16,7 @@
use goodboyalex\php_db_components_pack\enums\DBDriver;
use goodboyalex\php_db_components_pack\enums\DBOperation;
use goodboyalex\php_db_components_pack\interfaces\IDBItem;
use goodboyalex\php_db_components_pack\models\DBItemProperty;
use PDO;
/**

View File

@@ -7,9 +7,9 @@
use Exception;
use goodboyalex\php_db_components_pack\classes\ConditionBuilder;
use goodboyalex\php_db_components_pack\classes\DBItemProperty;
use goodboyalex\php_db_components_pack\enums\DBOperation;
use goodboyalex\php_db_components_pack\interfaces\IDBItem;
use goodboyalex\php_db_components_pack\models\DBItemProperty;
use PDO;
/**
@@ -80,11 +80,11 @@
/**
* Для каждого свойства...
*
* @var DBItemProperty $property Свойство.
* @var \goodboyalex\php_db_components_pack\models\DBItemProperty $property Свойство.
*/
foreach ($properties as $property) {
// ... если это первичный ключ
if ($property->IsPrimaryKey)
if ($property->Column->IsPrimaryKey)
// - то пропускаю его
continue;