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

Обсуждение:
https://yangx.top/yii3ru

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
⚡️ #yiisoftView

В пакете Yii View перенесли язык и тему в состояние сервисов View и WebView, сохраняемое при клонировании (PR, PR).

Соответственно переименовали методы:
withTheme()setTheme()
withLanguage()
setLanguage()
👍1
#yiisoftView #МажорныйРелиз #Релиз

🎁 Yii View 5.0.0

• Добавлено состояние сервисов View и WebView, которое сохраняется при клонировании самих сервисов (в том числе когда используются методы with*()), то есть клонированный объект будет использовать те же данные, что и исходный. Это позволяет, например, получить WebView в контроллере из контейнера с помощью DI и изменить его контекст:

final class BlogController {
private WebView $view;
public function __construct (WebView $view) {
$this->view = $view->withContextPath(__DIR__.'/views');
}
}

... а затем зарегистрировать CSS в виджете:

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 включает в себя: параметры, блоки, тему, язык, заголовок страницы, meta- и link-теги, JS/CSS строки и JS/CSS файлы.

Для клонирования View или WebView вместе с состоянием можно использовать метод withClearedState(), который дополнительно очищает клонированное состояние объекта:

$view = $view->withClearedState();

• Добавлена простая реализация интерфейса ViewContextInterface — класс ViewContext, который принимает в конструкторе путь к контексту.

• Добавлены методы View::withContextPath() и WebView::withContextPath() позволяющие задать контекст в виде пути к папке с представлениями.

• Добавлены методы View::addToParameter() и WebView::addToParameter(), которые позволяют добавить новый элемент к параметру, являющемся массивом. Эти методы удобно использовать, например, для «хлебных крошек»:

// Добавить крошки в представлении
$this->addToArrayParameter('breadcrumbs', $item1, $item2);

• В интерфейсе ViewInterface и его реализациях View и WebView мутабельный метод setPlaceholderSalt() заменён на иммутабельный withPlaceholderSalt().

• В интерфейсе ViewInterface и его реализациях View и WebView иммутабельные методы withTheme() и withLanguage() заменены на мутабельные, соответственно setTheme() и setLanguage().

• Доработан текучий интерфейс во ViewInterface, View и WebView: теперь все сеттеры (регистрация CSS/JS, удаление параметра, удаление блока и прочие) возвращают сам объект.

• В конфигурации пакета исправлена функция сброса состояния объектов: теперь после сброса в сервисы View и WebView добавляются параметры по-умолчанию.
👍4
⚡️ #yiisoftYiiBulma #yiisoftWidget #yiisoftYiiWidgets #yiisoftCache #yiisoftYiiView #yiisoftView #yiisoftValidator #yiisoftFiles

Обновили версии действий actions/cache и actions/checkout до 3 в GitHub Workflows, а также подняли версию PHP в конфигурации Scrutinizer до 8.0.18 в пакетах:

- Yii Bulma (PR)
- Yii Widget (PR)
- Yii Widgets (PR)
- Yii Caching Library (PR)
- Yii View Extension (PR)
- Yii View (PR)
- Yii Validator (PR)
- Yii Files (PR)
⚡️ #yiisoftMailer #yiisoftLogTargetSyslog #yiisoftHttp #yiisoftI18n #yiisoftLog #yiisoftLogTargetDb #yiisoftLogTargetEmail #yiisoftMailerSymfony #yiisoftMiddlewareDispatcher #yiisoftMutexPdoOracle #yiisoftMutexRedis #yiisoftRbac #yiisoftRbacDb #yiisoftRbacPhp #yiisoftRequestBodyParser #yiisoftRateLimiter #yiisoftProxy #yiisoftProfiler #yiisoftMutexPdoPgsql #yiisoftMutexPdoMysql #yiisoftMailerSwiftmailer #yiisoftHtml #yiisoftRequestModel #yiisoftRequirements #yiisoftRouter #yiisoftRouterFastroute #yiisoftSession #yiisoftStrings #yiisoftTestSupport #yiisoftTranslator #yiisoftTranslatorMessageDb #yiisoftUser #yiisoftView #yiisoftViewTwig #yiisoftWidget #yiisoftYiiConsole

Сделали изменения в стили кода. Методы, вызываемые «цепочкой», перенесли на новую строку:

- Yii Mailer Library (PR)
- Yii Logging Syslog Target (PR)
- Yii HTTP (PR)
- Yii Internationalization Library (PR)
- Yii Logging Library (PR)
- Yii Logging DB Target (PR)
- Yii Logging Email Target (PR)
- Yii Mailer Symfony Mailer Extension (PR)
- Yii Middleware Dispatcher (PR)
- Yii Mutex Oracle PDO Driver (PR)
- Yii Mutex Redis Driver (PR)
- Yii Role-Based Access Control (PR)
- Yii RBAC Database (PR)
- Yii RBAC PHP File Storage (PR)
- Yii Request Body Parser (PR)
- Yii Rate Limiter Middleware (PR)
- Yii Proxy (PR)
- Yii Profiler (PR)
- Yii Mutex PostgreSQL PDO Driver (PR)
- Yii Mutex MySQL PDO Driver (PR)
- Yii Mailer SwiftMailer Extension (PR)
- Yii HTML (PR)
- Yii Request Model (PR)
- Yii Requirements Checker (PR)
- Yii Router (PR)
- Yii Router FastRoute Adapter (PR)
- Yii Session (PR)
- Yii Strings (PR)
- Yii Test Support (PR)
- Yii Message Translator (PR)
- Yii Translator DB Message Storage (PR)
- Yii User (PR)
- Yii View (PR)
- Yii View Twig Renderer (PR)
- Yii Widget (PR)
- Yii Console (PR)
🔥4👍3
#yiisoftView #ПатчРелиз #Релиз

🎁 Yii View 5.0.1

• Добавлена поддержка yiisoft/cache версии ^2.0 (PR).
⚡️ #yiisoftView

В Yii View добавили новый метод ViewInterface::withBasePath(), который позволяет задать корневую директорию с представлениями (PR).
⚡️ #yiisoftView #yiisoftProfiler

Добавили поддержку Yii Files версии ^2.0 в пакетах:
- Yii View (PR),
- Yii Profiler (PR).
👍1
#yiisoftView #МажорныйРелиз #Релиз

🎁 Yii View 6.0.0

• Добавлен иммутабельный метод ViewInterface::withLocale(), устанавливающий локаль (PR).

• Добавлен метод ViewInterface::withBasePath(), который позволяет задать корневую директорию с представлениями.

• Переименованы методы ViewInterface (PR):
- setLanguage()setLocale();
- withSourceLanguage()withSourceLocale().

• Добавлена поддержка Yii Files версии ^2.0.
🔥3
⚡️ #yiisoftView

Несколько улучшений в Yii View.

• Минимальную версию PHP подняли до 8.0, в CI добавили Rector, применили предлагаемые изменения, а также в иммутабельных методах ViewInterface изменили тип возвращаемого значения с self на static (PR).

• В CI добавили проверку транзитивных зависимостей (PR, PR).
👍3