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

@@ -1,92 +0,0 @@
<?php
namespace goodboyalex\php_db_components_pack\classes;
use Closure;
use goodboyalex\php_components_pack\extensions\StringExtension;
/**
* Класс свойства класса, реализующего интерфейс IDBItem.
*
* @author Александр Бабаев
* @package php_db_components_pack
* @version 1.0
* @since 1.0
*/
final class DBItemProperty
{
/**
* @var string $Name Имя свойства.
*/
public string $Name;
/**
* @var mixed $Value Значение свойства (ещё не конвертированное!).
*/
public mixed $Value;
/**
* @var string $FieldName Имя поля в таблице БД.
*/
public string $FieldName;
/**
* @var DataBaseColumn $Column Информация об ячейке.
*/
public DataBaseColumn $Column;
/**
* @var bool $IsIgnored Признак того, что свойство игнорируется при сохранении в / загрузке из БД.
*/
public bool $IsIgnored;
/**
* @var Closure $ConvertToDB Конвертер значения свойства в значение поля БД.
*/
public Closure $ConvertToDB;
/**
* @var Closure $ConvertFromDB Конвертер значения поля БД в значение свойства.
*/
public Closure $ConvertFromDB;
/**
* @var Closure $Compare Функция сравнения значений свойства.
*/
public Closure $Compare;
/**
* Конструктор.
*
* @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 = '',
DataBaseColumn $column = new DataBaseColumn(), bool $isIgnored = false, ?callable $ConvertToDB = null,
?Closure $ConvertFromDB = null, ?Closure $Compare = null)
{
// Установка значений
// - установка имени свойства
$this->Name = $name;
// - установка значения свойства (ещё не конвертированного)
$this->Value = $value;
// - установка имени поля в таблице БД
$this->FieldName = StringExtension::IsNullOrWhitespace($fieldName) ? $name : $fieldName;
// - установка свойств столбца
$this->Column = $column;
// - установка признака того, что свойство игнорируется при сохранении в / загрузке из БД
$this->IsIgnored = $isIgnored;
// - установка конвертеров значения свойства в значение поля БД
$this->ConvertToDB = $ConvertToDB ?? fn (mixed $value): mixed => $value;
// - установка конвертеров значения поля БД в значение свойства
$this->ConvertFromDB = $ConvertFromDB ?? fn (mixed $value): mixed => $value;
// - установка функции сравнения значений свойства
$this->Compare = $Compare ?? fn (mixed $value1, mixed $value2): bool => $value1 == $value2;
}
}

View File

@@ -1,94 +0,0 @@
<?php
namespace goodboyalex\php_db_components_pack\classes;
use goodboyalex\php_components_pack\classes\Tuple;
use goodboyalex\php_db_components_pack\enums\DBType;
/**
* Класс, описывающий структуру колонки.
*
* @author Александр Бабаев
* @package php_db_components_pack
* @version 1.0
* @since 1.0
*/
final class DataBaseColumn
{
/**
* @var string $Name Имя колонки.
*/
public string $Name;
/**
* @var Tuple $Type Тип данных (DBType тип, int максимальная длина).
*/
public Tuple $Type;
/**
* @var bool $IsNotNull Запрещено ли вставлять пустые (NULL) значения в указанное поле.
*/
public bool $IsNotNull;
/**
* @var bool $IsUnique Обеспечивает уникальность каждого значения в данном поле.
*/
public bool $IsUnique;
/**
* @var bool $IsPrimaryKey Устанавливается на одно или несколько полей, гарантирующих уникальную идентификацию
* каждой записи в таблице.
*/
public bool $IsPrimaryKey;
/**
* @var Tuple $ForeignWith Связь с другой таблицей (string имя_таблицы, string имя_поля).
*/
public Tuple $ForeignWith;
/**
* @var ConditionBuilder $Check Параметры проверки введённого значения на соблюдение некоторого условия.
*/
public ConditionBuilder $Check;
/**
* @var mixed $Default Задаёт значение по умолчанию.
*/
public mixed $Default;
/**
* @var bool $IsAutoIncrement Автоматически генерирует уникальное значение каждый раз при создании новой записи.
*/
public bool $IsAutoIncrement;
/**
* Конструктор.
*
* @param string $name Имя колонки.
* @param Tuple $type Тип данных (DBType тип, int максимальная длина).
* @param bool $isNotNull Запрещено ли вставлять пустые (NULL) значения в указанное поле.
* @param bool $isUnique Обеспечивает уникальность каждого значения в данном поле.
* @param bool $isPrimaryKey Устанавливается на одно или несколько полей, гарантирующих уникальную
* идентификацию каждой записи в таблице.
* @param Tuple $foreignWith Связь с другой таблицей (string имя_таблицы, string имя_поля).
* @param ConditionBuilder $check Параметры проверки введённого значения на соблюдение некоторого условия.
* @param mixed|null $default Задаёт значение по умолчанию.
* @param bool $isAutoIncrement Автоматически генерирует уникальное значение каждый раз при создании новой
* записи.
*/
public function __construct (string $name = "", Tuple $type = new Tuple(DBType::STRING, 255),
bool $isNotNull = false, bool $isUnique = false, bool $isPrimaryKey = false,
Tuple $foreignWith = new Tuple(null, null), ConditionBuilder $check = new ConditionBuilder(),
mixed $default = null, bool $isAutoIncrement = false)
{
$this->Name = $name;
$this->Type = $type;
$this->IsNotNull = $isNotNull;
$this->IsUnique = $isUnique;
$this->IsPrimaryKey = $isPrimaryKey;
$this->ForeignWith = $foreignWith;
$this->Check = $check;
$this->Default = $default;
$this->IsAutoIncrement = $isAutoIncrement;
}
}

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;