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→isTableExistCreateTable→createTableParseColumn→parseColumnTypeConversation→typeConversationParseColumn→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)
- Первый выпуск проекта