2025-08-04 18:05:04 +03:00

92 lines
4.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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 DataBaseHeadItem $Column Информация об ячейке.
*/
public DataBaseHeadItem $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 DataBaseHeadItem $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 = '',
DataBaseHeadItem $column = new DataBaseHeadItem(), 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;
}
}