84 lines
3.9 KiB
PHP
84 lines
3.9 KiB
PHP
<?php
|
||
|
||
namespace goodboyalex\php_db_components_pack\models;
|
||
|
||
use Closure;
|
||
|
||
/**
|
||
* Класс свойства класса, реализующего интерфейс 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 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 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,
|
||
DataBaseColumn $column = new DataBaseColumn(), bool $isIgnored = false, ?callable $ConvertToDB = null,
|
||
?Closure $ConvertFromDB = null, ?Closure $Compare = null)
|
||
{
|
||
// Установка значений
|
||
// - установка имени свойства
|
||
$this->Name = $name;
|
||
// - установка значения свойства (ещё не конвертированного)
|
||
$this->Value = $value;
|
||
|
||
// - установка свойств столбца
|
||
$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;
|
||
}
|
||
} |