⚡️ #yiisoftFactory #yiisoftDi
В фабрике и контейнере зависимостей инжектор зависимостей
После этого изменения в контейнере исчезла возможность подмены инжектора.
В фабрике и контейнере зависимостей инжектор зависимостей
Yiisoft\Injector\Injector
теперь используется напрямую, а не берётся из контейнера (PR в Yii Factory, PR в Yii Dependency Injection). После этого изменения в контейнере исчезла возможность подмены инжектора.
⚡️ #yiisoftFactory #yiisoftDi
В интерфейсе
В интерфейсе
Yiisoft\Factory\DependencyResolverInterface
метод resolve()
переименован в resolveReference()
, так как он разрешает не все зависимости, а только ссылки (PR в Yii Factory, PR в Yii Dependency Injection).⚡️ #yiisoftFactory #yiisoftDi
Несколько изменений, касающихся дефинишенов в Yii Factory (PR):
• В динамических ссылках
• Объекты, указанные в дефинишене для передачи в качестве аргументов в конструктор, в фабрике теперь НЕ клонируются.
• В интерфейсе
• Удалён неиспользуемый код и некорректные тесты.
Несколько изменений, касающихся дефинишенов в Yii Factory (PR):
• В динамических ссылках
DynamicReference
запрещено использовать объекты. Попытка передать объект будет вызывать исключение (это работает и для контейнера).• Объекты, указанные в дефинишене для передачи в качестве аргументов в конструктор, в фабрике теперь НЕ клонируются.
• В интерфейсе
Yiisoft\Factory\DependencyResolverInterface
удалён метод shouldCloneOnResolve()
.• Удалён неиспользуемый код и некорректные тесты.
DependencyResolver
в Yii Dependency Injection адаптирован к этим изменениям (PR).⚡️ #yiisoftYiiAuthClient
В пакете Yii External Authentication Extension ранее удалённый интерфейс
В пакете Yii External Authentication Extension ранее удалённый интерфейс
Yiisoft\Factory\FactoryInterface
заменён на прямое использование фабрики Yiisoft\Factory\Factory
(PR).⚡️ #yiisoftApp #yiisoftViewTwig
В шаблоне веб-приложения удалена лишняя проверка при выводе заголовка страницы
Аналогичная проблема исправлена в документации к пакету Yii View Twig Renderer (PR).
Спасибо Chabib Nurozak за обнаруженную ошибку 👍
В шаблоне веб-приложения удалена лишняя проверка при выводе заголовка страницы
<title>
(PR).Аналогичная проблема исправлена в документации к пакету Yii View Twig Renderer (PR).
Спасибо Chabib Nurozak за обнаруженную ошибку 👍
⚡️ #yiisoftMutexFile #yiisoftMutexPdoMysql #yiisoftMutexPdoPgsql #yiisoftMutexPdoOracle
В мьютекс-драйверах удалена опция
- File Driver (PR),
- MySQL PDO Driver (PR),
- Postgres PDO Driver (PR),
- Oracle PDO Driver (PR).
Спасибо kafkiansky за идею 👍
В мьютекс-драйверах удалена опция
autoRelease
(теперь она всегда включена), а автоматическое снятие блокировки выполняется с помощью деструктора класса (__desctruct()
) вместо регистрации функции, которая будет выполнена при завершении скрипта (register_shutdown_function()
):- File Driver (PR),
- MySQL PDO Driver (PR),
- Postgres PDO Driver (PR),
- Oracle PDO Driver (PR).
Спасибо kafkiansky за идею 👍
⚡️ #yiisoftFactory #yiisoftDi
В конфигурациях контейнера и фабрики запрещено использование объектов, реализующих
В конфигурациях контейнера и фабрики запрещено использование объектов, реализующих
DefinitionInterface
, за исключением ссылок, то есть объектов, реализующих ReferenceInterface
(PR в Yii Factory, PR в Yii Dependency Injection).⚡️ #yiisoftMutex
Реализована обработка ошибок в пользовательском коде при использовании класса
• В мьютексе всегда будет снята блокировка, даже если во время выполнения callback-функции было брошено исключение.
• Если во время выполнения пользовательского кода произошла ошибка (не исключение, например
Спасибо Антону @faqphp за обнаруженную проблему 👍
Реализована обработка ошибок в пользовательском коде при использовании класса
Synchronizer
из пакета Yii Mutex (PR).• В мьютексе всегда будет снята блокировка, даже если во время выполнения callback-функции было брошено исключение.
• Если во время выполнения пользовательского кода произошла ошибка (не исключение, например
E_WARNING
), то такая ошибка будет преобразована в исключение ErrorException
, что позволит перехватить её.Спасибо Антону @faqphp за обнаруженную проблему 👍
⚡️ #yiisoftDi
В контейнере зависимостей Yii Dependency Injection немного изменён внутренний формат хранения дефинишенов для лучшей читаемости при дампе контейнера (PR).
В контейнере зависимостей Yii Dependency Injection немного изменён внутренний формат хранения дефинишенов для лучшей читаемости при дампе контейнера (PR).
⚡️ #yiisoftSession
Немного причесали пакет Yii Session (PR):
- включена проверка на обратную совместимость;
- улучшено оформление readme;
- обновлены dev-зависимости;
- исключены все служебные файлы при создании архива репозитория;
- улучшена конфигурация psalm.
- улучшена конфигурации GitHub Workflow и других служебных файлов.
Немного причесали пакет Yii Session (PR):
- включена проверка на обратную совместимость;
- улучшено оформление readme;
- обновлены dev-зависимости;
- исключены все служебные файлы при создании архива репозитория;
- улучшена конфигурация psalm.
- улучшена конфигурации GitHub Workflow и других служебных файлов.
⚡️ #yiisoftMutex
В документации к Yii Mutex добавлено предупреждение об особенностях использования деструкторов и shutdown-функций (PR).
—————
Выдержки из документации PHP
•
•
—————
Если в пользовательском коде или в других пакетах внутри деструктора или shutdown-функции работа скрипта будет остановлена с помощью
В документации к Yii Mutex добавлено предупреждение об особенностях использования деструкторов и shutdown-функций (PR).
—————
Выдержки из документации PHP
•
register_shutdown_function()
: "Возможна регистрация нескольких подобных функций с помощью register_shutdown_function(), при этом функции будут выполняться в том порядке, в каком они были зарегистрированы. Если вы вызовете exit() в одной из зарегистрированных завершающих функций, процесс будет полностью остановлен и последующие завершающие функции не будут вызваны."•
__destruct()
: "Деструктор будет вызываться даже в том случае, если скрипт был остановлен с помощью функции exit(). Вызов exit() в деструкторе предотвратит запуск всех последующих функций завершения."—————
Если в пользовательском коде или в других пакетах внутри деструктора или shutdown-функции работа скрипта будет остановлена с помощью
die()
или exit()
, то автоматическое снятие блокировки в мьютексе может не сработать.⚡️ #yiisoftMutex
В классе
В классе
SimpleMutex
из Yii Mutex реализовано автоматические удаление объекта мьютекса после снятия блокировки (PR).⚡️ #yiisoftMutexFile
Навели порядок в пакете Yii Mutex File Driver (PR):
- подчищен код, улучшены doc-блоки;
- обновлены dev-зависимости;
- уровень psalm повышен до 1;
- добавлены тесты;
- в файле
- исключены все служебные файлы при создании архива репозитория;
- актуализирован readme;
- улучшены конфигурация GitHub Workflow и другие служебные файлы.
Навели порядок в пакете Yii Mutex File Driver (PR):
- подчищен код, улучшены doc-блоки;
- обновлены dev-зависимости;
- уровень psalm повышен до 1;
- добавлены тесты;
- в файле
.editorconfig
добавлена секция *.yml
;- исключены все служебные файлы при создании архива репозитория;
- актуализирован readme;
- улучшены конфигурация GitHub Workflow и другие служебные файлы.
⚡️ #yiisoftMutex
Небольшой рефакторинг тестов в Yii Mutex: удалён трейт
Небольшой рефакторинг тестов в Yii Mutex: удалён трейт
MutexTestTrait
, а все тесты из него перенесены в сам класс с тестами (PR).⚡️ #yiisoftFactory
При создании объекта с помощью фабрики из пакета Yii Factory, в случае возникновения циклической зависимости (на любом уровне вложенности), теперь выбрасывается исключение
Пример:
При создании объекта с помощью фабрики из пакета Yii Factory, в случае возникновения циклической зависимости (на любом уровне вложенности), теперь выбрасывается исключение
CircularReferenceException
(PR).Пример:
final class Chicken
{
public function __construct(Egg $egg)
{
}
}
final class Egg
{
public function __construct(Chicken $chicken)
{
}
}
// Будет выброшено исключение `CircularReferenceException`
$factory->create(Chicken::class);
⚡️ #yiisoftMutexPdoMysql
Навели порядок в пакете Yii Mutex MySQL PDO Driver (PR):
- подчищен код, улучшены doc-блоки;
- обновлены dev-зависимости;
- уровень psalm повышен до 1;
- добавлены тесты;
- в файле
- исключены все служебные файлы при создании архива репозитория;
- актуализирован readme;
- улучшены конфигурация GitHub Workflow и другие служебные файлы.
Навели порядок в пакете Yii Mutex MySQL PDO Driver (PR):
- подчищен код, улучшены doc-блоки;
- обновлены dev-зависимости;
- уровень psalm повышен до 1;
- добавлены тесты;
- в файле
.editorconfig
добавлена секция *.yml
;- исключены все служебные файлы при создании архива репозитория;
- актуализирован readme;
- улучшены конфигурация GitHub Workflow и другие служебные файлы.
⚡️ #yiisoftDi
В пакете Yii Dependency Injection исправлена критичная ошибка в бенчмарках (PR): замеры проводилось без получения зависимостей.
В пакете Yii Dependency Injection исправлена критичная ошибка в бенчмарках (PR): замеры проводилось без получения зависимостей.
⚡️ #yiisoftMutex
В пакете Yii Mutex добавлен абстрактный класс
В пакете Yii Mutex добавлен абстрактный класс
Mutex
(реализует MutexInterface
), предоставляющий базовый функционал для создания драйверов (PR).⚡️#yiisoftMutexPdoPgsql
Исправлена опечатка в имени исключения, вызываемого в случае неудачного снятия блокировки в пакете Yii Mutex Postgres PDO Driver (PR).
Спасибо Максиму Сторчаку за выявленную ошибку и PR 👍
Исправлена опечатка в имени исключения, вызываемого в случае неудачного снятия блокировки в пакете Yii Mutex Postgres PDO Driver (PR).
Спасибо Максиму Сторчаку за выявленную ошибку и PR 👍
⚡️ #yiisoftApp #yiisoftAppApi #yiisoftDemo #yiisoftDemoApi
В приложениях конфигурация начальной загрузки (
- шаблон веб-приложения (PR),
- шаблон API-приложения (PR),
- демо веб-приложения (PR),
- демо API-приложения (PR).
В приложениях конфигурация начальной загрузки (
bootstrap
) разделена на общую, консольную и web-части: - шаблон веб-приложения (PR),
- шаблон API-приложения (PR),
- демо веб-приложения (PR),
- демо API-приложения (PR).
Bootstrap
представляет собой массив функций (точнее callable
) вида function (ContainerInterface $container): void
, которые последовательно будут вызваны при запуске приложения.