Хроники Yii3
619 subscribers
43 photos
1.7K links
Описание процесса разработки фреймворка из первых рук 😎

Обсуждение:
https://t.iss.one/yii3ru

Сводка по всем пакетам:
https://www.yiiframework.com/status/3.0

Поддержать разработчиков:
https://opencollective.com/yiisoft
Download Telegram
#yiisoftMailer #ПатчРелиз #Релиз

🎁 Yii Mailer 6.0.1

• Ограничение версии PHP в composer.json изменено на 8.1 - 8.4.

• Для опциональных nullable-параметров явно прописан тип с null для совместимости с PHP 8.4.
👍5👾1
#yiisoftForm #МинорныйРелиз #Релиз

🎁 Yii Form 1.4

• Доработано оформления поля Checkbox в теме "Bootstrap 5 Horizontal".

• При выводе поля Hidden игнорируется любой HTML, кроме самого тега <input>.

• Область видимости полей $beforeInput и $afterInput в классе PartsFeild изменена на protected.

• Ограничение версии PHP в composer.json изменено на 8.1 - 8.4.
👍3👾2
#yiisoftHtml #МинорныйРелиз #Релиз

🎁 Yii HTML 3.10

• В статических фабриках Button параметр $content сделан опциональным.

• В метод Select::value() разрешено передавать null.

• HTML атрибут loading теперь выводится перед src.

• Ограничение версии PHP в composer.json изменено на 8.1 - 8.4.

• Для опциональных nullable-параметров явно прописан тип с null для совместимости с PHP 8.4.
👍6👾1
#yiisoftRbac #МинорныйРелиз #Релиз

🎁 Yii Role-Based Access Control 2.1

• В классе Manager добавлена опциональная зависимость ClockInterface для получения текущего времени.

• Ограничение версии PHP в composer.json изменено на 8.1 - 8.4.

• Исправлена ошибка: в методе Manager::userHasPermission() не учитывались роли по умолчанию.
👍5👾1
🌿 #Полезное

Диёрбек Ибрагимов, один из участников сообщества Yii3, начал записывать серию видеоуроков по Yii3.

Но есть нюанс — уроки на узбекском языке.

В дальнейшем автор планирует добавить русские субтитры. Ну а пока для тех, кто знает узбекский: ⚡️ Плейлист на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31😁14👍52👾2
#yiisoftYiiBootstrap5 #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Bootstrap 5 1.0.0

Первый стабильный релиз пакета с виджетами для Bootstrap 5:

• Accordion
• Alert
• Breadcrumbs
• Button
• Button Group
• Button Toolbar
• Carousel
• Collapse
• Dropdown
• Modal
• Nav
• NavBar
• Offcanvas
• Progress
• Progress Stack
• Toast

Пример виджета:

echo Carousel::widget()
->id('carouselExampleOnlyText')
->items(
CarouselItem::to(
Div::tag()
->addClass('bg-primary text-white p-5 text-center')
->addContent(
H2::tag()->content('Title 1'),
P::tag()->content('This is the first slide with text.'),
),
),
CarouselItem::to(
Div::tag()
->addClass('bg-success text-white p-5 text-center')
->addContent(
H2::tag()->content('Title 2'),
P::tag()->content('This is the second slide with text.'),
),
),
CarouselItem::to(
Div::tag()
->addClass('bg-danger text-white p-5 text-center')
->addContent(
H2::tag()->content('Title 3'),
P::tag()->content('This is the third slide with text.'),
),
),
);
👍15🔥11👾1
#yiisoftCookies #ПатчРелиз #Релиз

🎁 Yii Cookies 1.2.3

• Ограничение версии PHP в composer.json изменено на ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0.

• Добавлена возможность использовать реализацию ClockInterface (PSR-20) для получения текущего времени.
👍7👾2
#yiisoftErrorHandler #МинорныйРелиз #Релиз

🎁 Yii Error Handler 4.1

• Добавлена новая фабрика ответа Yiisoft\ErrorHandler\ThrowableResponseFactory с поддержкой провайдеров рендереров.

Например, можно создать свой провайдер для запросов из библиотеки htmx:

final readonly class HtmxRendererProvider implements RendererProviderInterface
{
public function get(ServerRequestInterface $request): ?ThrowableRendererInterface
{
if ($request->hasHeader('Hx-Request')) {
return new PlainTextRenderer();
}

return null;
}
}


И добавить его в конфигурацию фабрики:

ThrowableResponseFactoryInterface::class => [
'class' => ThrowableResponseFactory::class,
'__construct()' => [
'rendererProvider' => DynamicReference::to(
static fn(ContainerInterface $container) => new CompositeRendererProvider(
new HeadRendererProvider(),
new HtmxRendererProvider(),
new ContentTypeRendererProvider($container)
)
)
],
],


Yiisoft\ErrorHandler\Factory\ThrowableResponseFactory помечен как устаревший.

• Рендереры ответа для исключений теперь добавляют в заголовки ответ тип содержимого.

• Исправлено отображение аргументов функции в тёмном режиме.
👍4👾1
#yiisoftValidator #МинорныйРелиз #Релиз

🎁 Yii Validator 2.3

• Добавлено правило валидации Uuid, проверяющее, что значение является строкой с корректным UUID.
👍151👾1
#yiisoftYiiRunnerRoadrunner #МинорныйРелиз #Релиз

🎁 Yii RoadRunner Runner 3.1

• Добавлена поддержка Temporal.

• Доработан RoadRunnerGrpcApplicationRunner, добавлены:
- обработка ошибок;
- использование bootstrap;
- проверка конфигурации событий;
- использование DI-контейнера.

• Требуемая версия yiisoft/error-handler поднята до ^4.0.

• Ограничение версии PHP в composer.json изменено на 8.1 - 8.4.

• Для опциональных nullable-параметров явно прописан тип с null для совместимости с PHP 8.4.
👍11🔥1👾1
#yiisoftPsrEmitter

Yii PSR Emitter

Вытащили эмиттер из Yii HTTP Runner в отдельный пакет, содержащий:

• интерфейс эмиттера для отправки PSR-7 ответа;

SapiEmitter — эмиттер, отправляющий ответ с помощью стандартного PHP Server API;

FakeEmitter — фейковый эмиттер, который ничего не отправляет, просто запоминает ответ (предназначен для тестов);

EmitterMiddleware — мидлварь, запускающая эмиттер.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👾1
#yiisoftView #МинорныйРелиз #Релиз

🎁 Yii View 12.2

• Добавлена возможность передавать Stringable-объекты в метод WebView::setTitle().

• Исправлена ошибка, возникающая, если в конфигурации пакета в параметре yiisoft/view → theme → pathMap передать массив путей тем.
👍5👾3
#yiisoftHttpMiddleware

Yii HTTP Middleware

Новый пакет под мидлвари, нацеленные на работу с HTTP. На текущий момент представлена только одна мидлварь:

ContentLengthMiddleware — добавляет/убирает к ответу заголовок Content-Length в соответствие с настройками.

В ближайшее время планируется добавить ещё одну новую:

HeadRequestMiddleware — удаляет содержимое из ответа для HEAD-запросов.

… и перетащить в этот пакет существующие из Yii Middleware:

CorsAllowAll
ForceSecureConnection
HttpCache
TagRequest
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👾1
#yiisoftPsrEmitter #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii PSR Emitter 1.0

Первый релиз PSR-7 совместимого эмиттера. Пакет предоставляет интерфейс EmitterInterface, который отвечает за отправку PSR-7 HTTP ответов, а также несколько реализаций:

SapiEmitter — отправляет ответ с помощью стандартного PHP Server API;
FakeEmiiter — эмиттер, который не делает ничего, только запоминает ответ (предназначен для тестов).

Использование эмиттера предельно простое:

/** 
* @var \Psr\Http\Message\ResponseInterface $response
*/
$emitter = new \Yiisoft\PsrEmitter\SapiEmitter();
$emitter->emit($response);
👍7👾1
#yiisoftDi #МинорныйРелиз #Релиз

🎁 Yii Dependency Injection 1.4

• Добавлен метод TagReference::id(), возвращающий идентификатор тега, по которому можно получить сервисы.

• Улучшена производительность контейнера.

• Параметр $config в конструкторе контейнера сделан опциональным.

• Исключения BuildingException и NotFoundException теперь реализуют FriendlyExceptionInterface.

• Ограничение версии PHP в composer.json изменено на 8.1 - 8.4.

• Для опциональных nullable-параметров явно прописан тип с null для совместимости с PHP 8.4.
👍4👾2
#yiisoftCache #МинорныйРелиз #Релиз

🎁 Yii Caching Library 3.1

• Добавлен интерфейс SerializerInterface и его реализация PhpSerializer.

• В классе CacheKeyNormalizer метод normalize() сделан статическим.

• Минимальная версия PHP повышена до 8.1 и выполнен соответствующий рефакторинг.

• Ограничение версии PHP в composer.json изменено на 8.1 - 8.4.

• Для опциональных nullable-параметров явно прописан тип с null для совместимости с PHP 8.4.
10👍3👾1
#yiisoftCsrf #ПатчРелиз #Релиз

🎁 Yii CSRF Protection Library 2.2.2

• Для опциональных nullable-параметров явно прописан тип с null для совместимости с PHP 8.4.
10👍3🔥2👾2
#yiisoftLog #ПатчРелиз #Релиз

🎁 Yii Logging Library 2.1.1

• Выполнен небольшой рефакторинг внутреннего класса ContextValueExtractor.

• Для опциональных nullable-параметров явно прописан тип с null для совместимости с PHP 8.4.
10👍5👾1
#yiisoftHttpMiddleware #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii HTTP Middleware 1.0.0

Пакет предоставляет набор PSR-15 мидлварей, ориентированных на работу с HTTP-функциональностью.

ContentLengthMiddleware — управляет заголовком Content-Length в ответе, автоматически добавляет/удаляет заголовок в соответствии с параметрами ответа и конфигурацией мидлвари.

CorsAllowAllMiddleware — добавляет CORS-заголовки, разрешающие запросы с любых источников.

ForceSecureConnectionMiddleware — перенаправляет небезопасные HTTP-запросы на HTTPS и добавляет заголовки, повышающие уровень безопасности.

HeadRequestMiddleware — удаляет тело ответа для HEAD-запросов.

HttpCacheMiddleware — реализует HTTP-кеширование с использованием заголовков Cache-Control, ETag и Last-Modified.

TagRequestMiddleware — добавляет в запрос специальный заголовок, который можно использовать для логирования или отладки.
10🔥121👾1
#yiisoftHttpMiddleware #МинорныйРелиз #Релиз

🎁 Yii HTTP Middleware 1.1

• Добавлена мидлварь RemoveBodyMiddleware, которая удаляет тело ответа для ответов с заданными статусами.
10👍6👾1
#yiisoftHtml #МинорныйРелиз #Релиз

🎁 Yii HTML 3.11

• Добавлены классы для тегов pre и code, а также соответствующие методы в классе Html.

• Добавлен psalm-тип OptionsData в классе Select.

• Для опциональных nullable-параметров явно прописан тип с null для совместимости с PHP 8.4 (в прошлый раз пропустили в нескольких местах).
👍4👾1