⚡️ #yiisoftConfig
Добавлена возможность хранения конфигурации пакета Yii Config в виде массива в PHP-файле вместо секции
... и перенести настройки в этот файл:
Добавлена возможность хранения конфигурации пакета Yii Config в виде массива в PHP-файле вместо секции
extra
в composer.json
(PR). Для этого нужно указать путь к PHP-файлу в composer.json
:"extra": {
"config-plugin-file": "path/to/configuration/file.php"
},
... и перенести настройки в этот файл:
return [
'config-plugin-options' => [
'source-directory' => 'config',
],
'config-plugin' => [
'params' => [
'params.php',
'?params-local.php',
],
'web' => 'web.php',
],
'config-plugin-environments' => [
'dev' => [
'params' => 'dev/params.php',
'app' => [
'$web',
'dev/app.php',
],
],
'prod' => [
'app' => 'prod/app.php',
],
],
];
⚡️ #yiisoftDemo
В демо веб-приложения добавлены модели форм авторизации и регистрации, а также улучшено оформления самих форм (PR).
В демо веб-приложения добавлены модели форм авторизации и регистрации, а также улучшено оформления самих форм (PR).
#yiisoftFactory #ПервыйРелиз #МажорныйРелиз #Релиз
🎁 Yii Factory 1.0.0
Пакет предоставляет фабрику, позволяющую создавать объекты по заранее заданным определениям (см. синтаксис в Yii Definitions) с разрешением зависимостей через PSR-11 контейнер.
Пример использования:
—————-
Перед релизом было внесено несколько изменений:
• контейнер стал обязательным + немного переработали и оптимизировали логику создания объектов и разрешения зависимостей (PR),
• фабрика стала полностью иммутабельной: методы
🎁 Yii Factory 1.0.0
Пакет предоставляет фабрику, позволяющую создавать объекты по заранее заданным определениям (см. синтаксис в Yii Definitions) с разрешением зависимостей через PSR-11 контейнер.
Пример использования:
$container = new PSR11DependencyInjectionContainer();
$factoryConfig = [
EngineInterface::class => [
'class' => EngineMarkOne::class,
'__construct()' => [
'power' => 42,
],
]
];
$factory = new Factory($container, $factoryConfig);
$one = $factory->create(EngineInterface::class);
$two = $factory->create([
'class' => EngineInterface::class,
'__construct()' => [
'power' => 146,
],
]);
—————-
Перед релизом было внесено несколько изменений:
• контейнер стал обязательным + немного переработали и оптимизировали логику создания объектов и разрешения зависимостей (PR),
• фабрика стала полностью иммутабельной: методы
set()
и setMultiple()
удалены, вместо них добавлен новый метод withDefinitions()
(PR).#yiisoftWidget #ПервыйРелиз #МажорныйРелиз #Релиз
🎁 Yii Widget 1.0.0
Виджеты представляют собой многоразовые строительные блоки, используемые в представлениях для создания сложных и настраиваемых элементов пользовательского интерфейса в рамках объектно-ориентированного подхода.
Пакет предоставляет абстрактный класс виджета и фабрику для их создания.
🎁 Yii Widget 1.0.0
Виджеты представляют собой многоразовые строительные блоки, используемые в представлениях для создания сложных и настраиваемых элементов пользовательского интерфейса в рамках объектно-ориентированного подхода.
Пакет предоставляет абстрактный класс виджета и фабрику для их создания.
⚡️ #yiisoftYiiSwagger
В пакете Yii Swagger исправлена ошибка, возникающая при включении кэширования (PR).
В пакете Yii Swagger исправлена ошибка, возникающая при включении кэширования (PR).
⚡️ #yiisoftView
Сделали несколько улучшений в Yii View (PR):
• в интерфейсе
• доработали текучий интерфейс в
• в конфигурации пакета исправили функцию сброса состояния объектов: теперь после сброса в сервисы
И ещё одно важное изменение: теперь состояние сервисов
Сделали несколько улучшений в Yii View (PR):
• в интерфейсе
ViewInterface
и его реализациях View
и WebView
мутабельный метод setPlaceholderSalt()
заменён на иммутабельный withPlaceholderSalt()
;• доработали текучий интерфейс в
ViewInterface
, View
и WebView
: теперь все сеттеры (регистрация CSS/JS, удаление параметра, удаление блока и прочие) возвращают сам объект;• в конфигурации пакета исправили функцию сброса состояния объектов: теперь после сброса в сервисы
View
и WebView
добавляются параметры по-умолчанию.И ещё одно важное изменение: теперь состояние сервисов
View
и WebView
не клонируется при клонировании самих сервисов (в том числе когда используются методы with*()
), то есть клонированный объект будет использовать те же данные, что и исходный. Это позволяет, например, получить WebView
в контроллере из контейнера с помощью DI и изменить его контекст:final class BlogController {... а затем зарегистрировать CSS в виджете:
private WebView $view;
public function __construct (WebView $view) {
$this->view = $view->withContextPath(__DIR__.'/views');
}
}
final class LastPosts extends WidgetДля клонирования
{
private WebView $view;
public function __construct (WebView $view) {
$this->view = $view;
}
protected function run(): string
{
...
$this->view->registerCss('.lastPosts { background: #f1f1f1; }');
...
}
}
View
или WebView
вместе с состоянием можно использовать метод withClearedState()
, который дополнительно очищает клонированное состояние объекта:$view = $view->withClearedState();
⚡️ #yiisoftTranslatorExtractor
В пакете Yii Message Extractor добавлена поддержка нескольких источников для извлечения строк (PR). Чуть позже добавим документацию по этому функционалу.
В пакете Yii Message Extractor добавлена поддержка нескольких источников для извлечения строк (PR). Чуть позже добавим документацию по этому функционалу.
#yiisoftYiiSwagger #ПервыйРелиз #МажорныйРелиз #Релиз
🎁 Yii Swagger 1.0.0
Интеграция Swagger-PHP c Yii3, позволяющая генерировать интерактивную документацию OpenAPI на основании аннотаций, например:
🎁 Yii Swagger 1.0.0
Интеграция Swagger-PHP c Yii3, позволяющая генерировать интерактивную документацию OpenAPI на основании аннотаций, например:
/**
* @OA\Get(
* path="/api/endpoint",
* @OA\Response(response="200", description="Get default action")
* )
*/
public function process(
ServerRequestInterface $request,
RequestHandlerInterface $handler
): ResponseInterface
{
// ...
}
⚡️ #yiisoftTranslatorExtractor
Несколько улучшений в Yii Message Extractor (PR):
• добавили дружественные исключения;
• в экстракторе добавили проверку на наличие источников: теперь необходимо передать хотя бы один источник, в противном случае будет брошено исключение;
• немного доработали конфигурацию пакета;
• улучшили примеры в документации.
Несколько улучшений в Yii Message Extractor (PR):
• добавили дружественные исключения;
• в экстракторе добавили проверку на наличие источников: теперь необходимо передать хотя бы один источник, в противном случае будет брошено исключение;
• немного доработали конфигурацию пакета;
• улучшили примеры в документации.
⚡️ #yiisoftRbac
В пакете Yii Role-Based Access Control Library добавили опцию, указывающую можно ли назначать разрешения напрямую пользователю (PR).
По-умолчанию эта опция отключена, то есть при назначении разрешения пользователю будет брошено исключение.
В пакете Yii Role-Based Access Control Library добавили опцию, указывающую можно ли назначать разрешения напрямую пользователю (PR).
По-умолчанию эта опция отключена, то есть при назначении разрешения пользователю будет брошено исключение.
#yiisoftConfig #ПервыйРелиз #МажорныйРелиз #Релиз
🎁 Yii Config 1.0.0
Пакет обеспечивает сборку конфигурации для приложения из конфигураций, поставляемых вместе с зависимостями приложения, и конфигураций самого приложения.
При установке или изменении зависимостей приложения автоматически формируется план сборки конфигурации. Сама сборка происходит в процессе выполнения приложения, что значительно упрощает отладку и разработку.
Подробная информация об установке и использовании пакета представлена в readme.
У пакета, как обычно, высокие технические показатели качества:
- 100% покрытие тестами;
- 93,6% MSI;
- 99,1% уровень покрытия типами;
- Psalm уровень 1.
—————
Перед релизом было сделано несколько улучшений.
• Добавили опцию
• Улучшили описание в readme и конфигурации GitHub Actions, scrutinizer, psalm, StyleCI (PR).
🎁 Yii Config 1.0.0
Пакет обеспечивает сборку конфигурации для приложения из конфигураций, поставляемых вместе с зависимостями приложения, и конфигураций самого приложения.
При установке или изменении зависимостей приложения автоматически формируется план сборки конфигурации. Сама сборка происходит в процессе выполнения приложения, что значительно упрощает отладку и разработку.
Подробная информация об установке и использовании пакета представлена в readme.
У пакета, как обычно, высокие технические показатели качества:
- 100% покрытие тестами;
- 93,6% MSI;
- 99,1% уровень покрытия типами;
- Psalm уровень 1.
—————
Перед релизом было сделано несколько улучшений.
• Добавили опцию
vendor-override-layer
, позволяющая добавить слой конфигураций между приложением и вендором (PR).• Улучшили описание в readme и конфигурации GitHub Actions, scrutinizer, psalm, StyleCI (PR).
⚡️ #yiisoftActiveRecord
Исправили проблему с многократным созданием подключения (
Исправили проблему с многократным созданием подключения (
ConnectionInterface
) в Yii Active Record (PR).⚡️ #yiisoftRouter
Доработали автоответ на OPTIONS-запросы в Yii Router (PR).
По-умолчанию роутер автоматически отправляет ответ на на OPTIONS-запрос на оснований заданных роутов:
Доработали автоответ на OPTIONS-запросы в Yii Router (PR).
По-умолчанию роутер автоматически отправляет ответ на на OPTIONS-запрос на оснований заданных роутов:
HTTP/1.1 204 No ContentЕсли вам потребуются заголовки CORS, то вы можете использовать мидлварь, например tuupola/cors-middleware:
Allow: GET, HEAD
use Yiisoft\Router\Group;
use \Tuupola\Middleware\CorsMiddleware;
return [
Group::create('/api')
->withCors(CorsMiddleware::class)
->routes([
// ...
]
);
];
⚡️ #yiisoftYiiDataview
В пакете Yii Data Widgets удалена неиспользуемая категория сообщений для перевода (PR).
В пакете Yii Data Widgets удалена неиспользуемая категория сообщений для перевода (PR).
⚡️ #yiisoftDb #yiisoftDbRedis
Несколько улучшений в Yii DB:
• построитель запросов и схема БД теперь зависят от
• в
Эти изменения потребовали также внести несколько правок в Yii DB Redis Extension (PR).
Несколько улучшений в Yii DB:
• построитель запросов и схема БД теперь зависят от
ConnectionInterface
вместо реализации Connection
(PR), что позволяет использовать пакет с базами данных без драйверов PDO (например, ClickHouse);• в
ConnectionInterface
добавлен метод quoteColumnName()
(PR).Эти изменения потребовали также внести несколько правок в Yii DB Redis Extension (PR).
#yiisoftFiles #ПатчРелиз #Релиз
🎁 Yii Files 1.0.1
• Добавлена нормализацию разделителя пути в паттернах.
🎁 Yii Files 1.0.1
• Добавлена нормализацию разделителя пути в паттернах.
#yiisoftDefinitions #ПатчРелиз #Релиз
🎁 Yii Definitions 1.0.1
• Добавлена поддержка объектов в значениях параметров по умолчанию (PR).
Возможность использовать объекты в качестве значений параметров по умолчанию появилась в PHP 8.1, например:
Теперь это поддерживается в пакете Yii Definitions, а следовательно и в фабрике Yii Factory и в DI-контейнере Yii Dependency Injection.
🎁 Yii Definitions 1.0.1
• Добавлена поддержка объектов в значениях параметров по умолчанию (PR).
Возможность использовать объекты в качестве значений параметров по умолчанию появилась в PHP 8.1, например:
class Service
{
public function __construct(
private Logger $logger = new NullLogger(),
) {}
}
Теперь это поддерживается в пакете Yii Definitions, а следовательно и в фабрике Yii Factory и в DI-контейнере Yii Dependency Injection.