history.md


История версий

Здесь описаны все изменения проекта.

Версия 2.0.8 (22.10.2026)

1. Критические изменения API

1.1. ObjectArray → PyList

Компонент переведён на типизированный PyList из php_components_pack версии 1.7: IDBDriver, ITableManager, DatabaseSpecial, InsertManager, SelectManager, TableManager, DriversGeneral, все драйверы (MSSQL, MySQL, OracleDB, PostgreSQL, SQLite).

IgnoredInDB::$ignoredOperations теперь PyList<DBOperation> с проверкой типа: new PyList ($ignoredOperations, DBOperation::class).

В сигнатурах появились типизированные значения по умолчанию: new PyList ([], SQLQueryOption::class), new PyList ([], DBItemProperty::class).

Вызов ObjectArray::isExist () заменён на PyList::contains () (в DriversGeneral, тестах).

TableManager собирает колонки через PyList и add () вместо ObjectArray::Add ().

1.2. Переименование методов ITableManager

  • IsTableExist → isTableExist
  • CreateTable → createTable
  • ParseColumn → parseColumn
  • TypeConversation → typeConversation
  • ParseColumn → parseColumn

1.3. Новое исключение DatabaseException

Добавлено исключение sources/exceptions/DatabaseException.php (@since 2.0.8).

2. Устойчивость и обработка ошибок

  • PrimitiveConverter::toArray () — unserialize () обёрнут в try/catch (TypeError|ValueError), при ошибке возвращается [].
  • Localization::getLocalized () — strpos () защищён от ValueError; форматирование sprintf/match защищено от ArgumentCountError и ValueError.
  • DBConfig::unSerialize () — json_decode () обёрнут в try/catch (ValueError).
  • DBLogConfig::unSerialize () — аналогичный try/catch (ValueError).
  • DatabaseSpecial::getProperties () — при Error от get_class_vars () молча возвращает пустой список.

3. Код-стайл и типизация

  • Во всех файлах declare (strict_types = 1) → declare (strict_types=1).
  • Убраны пробелы в union-типах: string | array | null → string|array|null, false | array → false|array.
  • Приведение типов: (string)$x → (string) $x, (int)$x → (int) $x.
  • Ссылки: int & $index → int &$index.
  • Добавлены @throws, generics-аннотации PyList<...>, упорядочены импорты.
  • Переформатированы массивы, вызовы и объявления методов в тестах и PrimitiveConverter.

4. Тесты

  • SelectTest, UpdateTest — проверки ObjectArray заменены на PyList.
  • Converters.php — полный рефакторинг: strict_types, intval () для enum, ValueError при null от tryFrom (), ArrayFromString () ловит TypeError/ValueError.
  • UserModel.php — добавлен strict_types.
  • DatabaseTestConfig_sample.php — удалены неиспользуемые импорты.
  • Во всех тестах: dbItemClass: UserModel::class вместо строки, добавлены: void, @noinspection, обработка DatabaseException/ExpectationFailedException.
  • SelectTest: isExist () → contains ().
  • InsertTest: ошибки пробрасываются через self::throwException ().
  • DeleteTest: ошибки утверждений проглатываются пустым catch.

5. Зависимости и инфраструктура

  • composer.json:
    • goodboyalex/php_components_pack: >=v1.6 → >=v1.7;
    • phpunit/phpunit: >=13.3.0 → >=13.4.3;
    • phpstan/phpstan: >=2.2.1 → >=2.3.1.
  • .gitignore: tests/DatabaseTestConfig.php → tests/database_config.php, добавлен .aiforopenide/ с исключением config.json.

Версия 2.0.7 (07.08.2026)

В этом релизе:

  • адаптация к изменениям в php_components_pack версии 1.6;
  • в атрибуте Check изменён тип параметра $condition на array.

Версия 2.0.6 (31.05.2026)

В этом релизе:

  • добавлен класс PrimitiveConverter, отвечающий за преобразование примитивов;
  • исправили ошибку с преобразованием в типе DBItemProperty и классе DatabaseSpecial;
  • в классе DatabaseSpecial добавли метод static function getType (mixed $value, bool $asClassProperty = false): DBType | false для определения типа переменной.

Версия 2.0.5 (24.05.2026)

В этом релизе:

  • исправили ошибку с функцией getError.

Версия 2.0.4 (08.01.2026)

В этом релизе:

  • исправили ошибку с [IgnoredInDB]: Class "goodboyalex\php_components_pack\classes\ObjectArray" not found.

Версия 2.0.3 (30.12.2025)

В этом релизе:

  • исправили ошибку с getLastInsertId во всех драйверах;
  • изменён тип возвращаемого значения метода getLastInsertId (интерфейс IDBDriver) на string | false: получает последний вставленный ID или false в случае ошибки.

Версия 2.0.2 (23.12.2025)

Решили проблему с версией 2.0.1. А именно:

  • классы-производные для Database теперь требуют обязательного аргумента $logger не класс Logger, а интерфейс ILogger;
  • в модель DBLogConfig добавлено свойство ?ILogger $logger, которое позволяет задать внешнюю систему журналирования, реализующую интерфейс ILogger. Если null, будет создаваться класс Logger из PHP COMPONENTS PACK.

Версия 2.0.1 (22.12.2025)

Немного исправили то, что было забыто в 2.0. А именно:

  • Добавили систему управления транзакциями;
  • В класс Database добавили свойство transaction, который позволяет управлять транзакциями.

Версия 2.0 (20.12.2025)

Версия 2.0 является переработкой всего проекта. Многие функции были изменены или добавлены. К сожалению, мы не можем описать все изменения. Рекомендуется ознакомиться с документацией для более подробной информации.

Версия 1.0.2 (20.08.2025)

В этом релизе исправлены ошибки, доработаны баги и другие улучшения.

Было улучшено:

  • исправлены ошибки при которых данные не добавлялись, не получались.
  • в перечисление DBDriver добавлен статичный метод public static function GetSigns (DBDriver $driver): Tuple, который помогает получить знаки открытия/закрытия полей для СУБД.
  • в класс Condition, метод Get добавлен обязательный параметр DBDriver $driver.
  • такой же параметр добавлен в методы: GetConditions класса ConditionGroup и Build класса ConditionBuilder.
  • добавлен тест операций с БД.

Версия 1.0.1 (15.08.2025)

Это обновление повышает стабильность работы.

Кроме того, возвращаемый тип метода GetRow класса Database изменён на IDBItem|false вместо object|false.

Версия 1.0 (10.08.2025)

  • Первый выпуск проекта

На главную