This commit is contained in:
Александр Бабаев 2025-07-30 18:33:02 +03:00
parent 8436569ce5
commit 45fb57981d
7 changed files with 323 additions and 159 deletions

View File

@ -2,6 +2,4 @@
[RU] Набор компонентов для сайта на PHP для работы с базами данных [RU] Набор компонентов для сайта на PHP для работы с базами данных
[EN] A set of components for PHP website for work with database [EN] A set of components for PHP website for work with database

View File

@ -0,0 +1,45 @@
<?php
/**
* Отключаю несущественные инспекции (из-за Attribute)
*
* @noinspection PhpMultipleClassDeclarationsInspection
*/
namespace goodboyalex\php_db_components_pack\attributes;
use Attribute;
use Closure;
/**
* Атрибут указания методов конвертации из/в тип для заполнения таблицы базы данных.
*
* @author Александр Бабаев
* @package php_db_components_pack
* @version 1.0
* @since 1.0
*/
#[Attribute(flags: Attribute::TARGET_PROPERTY)]
final readonly class ConvertToDB
{
/**
* @var Closure|null Метод конвертации из типа для заполнения таблицы базы данных.
*/
public ?Closure $ConvertToDB;
/**
* @var Closure|null Метод конвертации в тип для заполнения таблицы базы данных.
*/
public ?Closure $ConvertFromDB;
/**
* Конструктор.
*
* @param callable|null $fromType Метод конвертации из типа для заполнения таблицы базы данных.
* @param callable|null $toType Метод конвертации в тип для заполнения таблицы базы данных.
*/
public function __construct (?callable $fromType = null, ?callable $toType = null)
{
$this->ConvertToDB = $fromType;
$this->ConvertFromDB = $toType;
}
}

View File

@ -0,0 +1,47 @@
<?php
/**
* Отключаю несущественные инспекции (из-за Attribute)
*
* @noinspection PhpMultipleClassDeclarationsInspection
*/
namespace goodboyalex\php_db_components_pack\attributes;
use Attribute;
use goodboyalex\php_components_pack\classes\ObjectArray;
use goodboyalex\php_db_components_pack\enums\DBOperation;
/**
* Атрибут указывающий, что свойство должно игнорироваться при операции с БД.
*
* @author Александр Бабаев
* @package php_db_components_pack
* @version 1.0
* @since 1.0
*/
#[Attribute(flags: Attribute::TARGET_PROPERTY)]
final readonly class IgnoredInDB
{
/**
* @var ObjectArray Игнорируемые операции.
*/
public ObjectArray $IgnoredOperations;
/**
* Конструктор.
*
* @param DBOperation ...$ignoredOperations Список операций, которые игнорируем.
*/
public function __construct (DBOperation ...$ignoredOperations)
{
// Если не указаны операции
if (count($ignoredOperations) === 0)
// - то по умолчанию игнорируем все операции
$ignoredOperations = [
DBOperation::Insert, DBOperation::Get, DBOperation::Update, DBOperation::Delete, DBOperation::Count
];
// Инициализируем массив
$this->IgnoredOperations = new ObjectArray($ignoredOperations);
}
}

View File

@ -0,0 +1,29 @@
<?php
/**
* Отключаю несущественные инспекции (из-за Attribute)
*
* @noinspection PhpMultipleClassDeclarationsInspection
*/
namespace goodboyalex\php_db_components_pack\attributes;
use Attribute;
/**
* Атрибут указания, что параметр является первичным ключом таблицы.
*
* @author Александр Бабаев
* @package php_db_components_pack
* @version 1.0
* @since 1.0
*/
#[Attribute(flags: Attribute::TARGET_PROPERTY)]
final readonly class PrimaryKey
{
/**
* Конструктор
*/
public function __construct ()
{
}
}

View File

@ -1,10 +1,10 @@
<?php <?php
namespace goodboyalex\php_db_components_pack\enums; namespace goodboyalex\php_db_components_pack\enums;
use goodboyalex\php_components_pack\traits\EnumExtensionsTrait; use goodboyalex\php_components_pack\traits\EnumExtensionsTrait;
/** /**
*Перечисление PDO-драйверов. *Перечисление PDO-драйверов.
* *
* @author Александр Бабаев * @author Александр Бабаев
@ -13,8 +13,8 @@ use goodboyalex\php_components_pack\traits\EnumExtensionsTrait;
* @since 1.0 * @since 1.0
* @see \PDO * @see \PDO
*/ */
enum DBDriver: int enum DBDriver: int
{ {
// Подключаем trait для работы с перечислениями // Подключаем trait для работы с перечислениями
use EnumExtensionsTrait; use EnumExtensionsTrait;
@ -42,4 +42,4 @@ enum DBDriver: int
* SQLite * SQLite
*/ */
case SQLite = 4; case SQLite = 4;
} }

View File

@ -0,0 +1,45 @@
<?php
namespace goodboyalex\php_db_components_pack\enums;
use goodboyalex\php_components_pack\traits\EnumExtensionsTrait;
/**
*Перечисление операций в БД.
*
* @author Александр Бабаев
* @package php_db_components_pack
* @version 1.0
* @since 1.0
* @see \PDO
*/
enum DBOperation: int
{
// Подключаем trait для работы с перечислениями
use EnumExtensionsTrait;
/**
* Операция вставки.
*/
case Insert = 0;
/**
* Операция получения.
*/
case Get = 1;
/**
* Операция обновления.
*/
case Update = 2;
/**
* Операция удаления.
*/
case Delete = 3;
/**
* Операция подсчета количества.
*/
case Count = 4;
}

View File

@ -1,12 +1,12 @@
<?php <?php
namespace goodboyalex\php_db_components_pack\models; namespace goodboyalex\php_db_components_pack\models;
use goodboyalex\php_components_pack\classes\Encryptor; use goodboyalex\php_components_pack\classes\Encryptor;
use goodboyalex\php_components_pack\interfaces\ISerializable; use goodboyalex\php_components_pack\interfaces\ISerializable;
use goodboyalex\php_db_components_pack\enums\DBDriver; use goodboyalex\php_db_components_pack\enums\DBDriver;
/** /**
* Модель параметров базы данных. * Модель параметров базы данных.
* *
* @author Александр Бабаев * @author Александр Бабаев
@ -14,8 +14,8 @@ use goodboyalex\php_db_components_pack\enums\DBDriver;
* @version 1.0 * @version 1.0
* @since 1.0 * @since 1.0
*/ */
final class DBConfig implements ISerializable final class DBConfig implements ISerializable
{ {
/** /**
* @var string $Host Хост базы данных. * @var string $Host Хост базы данных.
*/ */
@ -117,4 +117,4 @@ final class DBConfig implements ISerializable
// Сериализую // Сериализую
return json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); return json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
} }
} }