Конференция PHP Russia. 13 мая, Москва. Подать доклад можно до 21 февраля.
Русскоязычное сообщество Yii
Yii — это высокоэффективный основанный на компонентной структуре PHP-фреймворк для разработки масштабных веб-приложений. Он позволяет максимально применить концепцию повторного использования кода и может существенно ускорить процесс веб-разработки. Название Yii (произносится как Yee или [ji:]) означает простой (easy), эффективный (efficient) и расширяемый (extensible).
2.0.32
Быстрый, безопасный и профессиональный PHP Framework
Быстрый
Yii запускает только то, что используется, имеет мощную систему кэширирования и изначально нацелен на отличную работу с AJAX.
Безопасный
В Yii есть всё для обеспечения безопасности: валидация, фильтрация, защита от SQL-инъекций и XSS.
Профессиональный
Yii помогает писать чистый гибкий код. Фреймворк следует MVC и чётко отделяет логику от отображения.
Новости - yiiframework.ru
Опубликовать пост
Новости Yii 2020, выпуск 2

Этот новостной выпуск было написать довольно трудно. Не потому что не о чем писать, наоборот — Yii 3 улучшается с каждым днём и процесс настолько затягивает, что от него не оторваться :)

Yii 2

  • simialbi реализовал перенос тестирования Yii 2 из Travis в Github actions. Это позволило сократить время на билды для коммитов и pull request-ов. Минус только в том, что actions пока менее стабильны, чем Travis: иногда случаются segfault-ы, проблемы со стартом сервисов и так далее. Именно поэтому пока мы решили не переводить на Github actions Yii 3, а сначала понаблюдать за Yii 2.
  • haveyaseen пропатчил PHPUnit для полной поддержки PHP 5.4 — 7.4, теперь тесты проходят без warning-ов.
  • Обновили модуль Codeception Yii 2 для поддержки мультисессий Codeception.
  • Релиз Twig 2.2.2 и 2.3.0.
  • Релиз Auth client 2.2.7.
  • Релиз Apidoc 2.1.3.
  • Релиз Sphinx 2.0.13.

Yii 3

Это не полный список, так как pull request-ов было очень много!

  • Пакет widget выделен из view и, наконец, принял законченную форму.
  • Было реализовано несколько стандартных виджетов Yii, они разместились в пакете yii-widgets.
  • Сделали черновую реализацию Bootstrap 4.
  • Стали использовать PSR-12 для автоматического исправления стиля кода через StyleCI.
  • Внедрили типизированные свойства почти во все пакеты.
  • Отполировали пакет validator.
  • Продолжили разработку пакета интеграции с Cycle и самой Cycle ORM. ORM стала быстрее. Отрефакторили интеграцию, добавили команду cycle/schema, SelectDataReader (реализацию интерфейса "data"). Добавили возможность определить схему также через отдельные файлы PHP, а не только в аннотациях. Дописали документацию.
  • Пакет router был сильно изменён. Отрефакторен, частично переписан заново, почищен от багов. Добавлена генерация абсолютных URL, улучшен синтаксис, исправлено использование стека middleware, добавлена "ленивая" инициализация. Значительно выросла производительность.
  • Отрефакторили пакет RBAC.
  • Реализовали Message Formatter в i18n. Translator выделили в отдельный пакет.
  • Начали разработку пакета queue.
  • Offset paginator из пакета data привели в соответствие с реальными кейсами использования.
  • Подключили Dependabot в репозитории Yii 3, обновили все зависимости.
  • Продолжена разработка пакета dataview (списки и гриды).
  • Внесли в пакет arrays важные исправления, как новые, так и портированные с Yii 2.
  • Важные исправления в контейнере DI. Теперь service provider с отложенной инициализацией обязан явно предоставить список ID предоставляемых им сервисов.
  • Несколько классов убрали из пакета web: Chain middleware, action caller middleware, callback middleware. Теперь их поддержка встроена напрямую в роутер.
  • Переделали middleware dispatcher для корректного использования стека middleware. Убедились, что все потенциально опасные варианты использования теперь невозможны.
  • Web приложение начало генерировать события на этапах инициализации, завершения работы, а также начала и завершения обработки запроса.
  • Улучшили синтаксис для рендера view в demo.
  • Сделали первые рабочие версии портированных в Yii 3 компонентов абстракции DB Yii 2, реализации драйверов PostgreSQL, MySQL, SQLite и Active Record. Качество пока что далеко от допустимого в продакшене, но это важный шаг к возможной самостоятельной реализации.
  • Составили черновик дизайна debugger, приступили к реализации.
  • Сделали провайдер конкретных событий для диспетчера событий.
  • В demo исправили проблемы с Docker, а сам пакет превратился в пример блога. В настоящий момент demo активно использует Cycle ORM, Bootstrap 4 и пакет data. Таким образом, вы можете увидеть, как сейчас реализуется приложение на Yii 3. В то же время, обращаем ваше внимание, что это определённо не финальная версия. Очень ждём фидбек по этой теме на официальном форуме и в issue tracker.

Новые и переработанные внутренние соглашения:

Новые страницы в руководстве по фреймворку:

⚠️ Не пытайтесь повторить это в домашних условиях ;)

Некоторые отчаянные разработчики уже начинают свои первые проекты на Yii 3 и даже выкатывают их в продакшен. Несмотря на все недостатки пре-альфа версии, отзывы свидетельствуют, что процесс разработки более приятный, чем в Yii 2. Это хороший знак.

Рекомендации к чтению

Несколько статей, отражающих дух Yii 3:

❤️ Спасибо!

Хочу сказать спасибо всем спонсорам и разработчикам, благодаря которым стала возможна разработка Yii 3. Вместе у нас всё получится.

Отдельное спасибо тем, кто помог Yii 3 кодом:

читать далее...
Новости Yii 2020, выпуск 1

Всем привет! Это первый апдейт в этом году, который, надеюсь, начался для вас столь же продуктивно. Я решил, что буду называть апдейты этого года также, как называют номера печатных журналов. Так их проще отличать, да и придумывать каждый раз название не нужно :)

читать далее...

Yii, год в ретроспективе

Уже конец 2019 года, посмотрим, что же удалось сделать.

Фонд

В этом году был создан фонд на OpenCollective, который позже был дополнен Tidelift и GitHub. Он позволяет мне фокусироваться на Yii 3 и, в тоже время, нормально поддерживать Yii 1.1 и Yii 2.0. Это успех и я хочу сказать спасибо всем, благодаря кому это стало возможным.

Процессы

Я ввёл "релизные вторники", определил процесс работы с issue, улучшил инструменты для релизов Yii 2. Всё это вылилось в 15 выпущенных версий Yii 2, одну версию Yii 1.1 и многочисленные релизы расширений Yii 2. И всё это параллельно с разработкой Yii 3.

Также удалось определить релизный цикл.

Yii 3

Как можно понять из постов на OpenCollective, прогресс, благодаря отличным pull request-ам и review от сообщества, значительный. Спасибо за это. Вместе у нас всё получится.

Конечно, ещё есть что дорабатывать, но Yii 3 уже можно использовать в проектах. Естественно, пока не в коммерческих, а в хобби-проектах и если у вас достаточно времени делать правки потому как ломающих API изменений пока ещё много.

На данный момент у нас есть набор пакетов, часть руководства, демо-приложение, отличный инструмент для разработки самого фреймворка и обкатанный процесс разработки.

В следующем году будем релизить альфа версии пакетов, реализуем пару простых проектов чтобы понять, достаточно ли удобен фреймворк и поправить возникающие проблемы, сделаем шаблон приложения, закончим руководство, дополируем пакеты и реализуем важные, но пока отсутствующие штуки вроде дебаггера и Gii.

Спасибо за поддержку и с новым годом!

читать далее...
Yii 1, Yii 2.0.31 и прогресс в Yii 3

Всем привет! Мы молчали почти месяц. Работали над всеми версиями фреймворка и ниже расскажем о самом интересном.

Yii 1

Код из master прошёл все тесты на PHP 7.4 без каких-либо изменений. Этот факт стал для нас приятным сюрпризом. Есть ещё пара проблем с PHP 7, которые не покрыты тестами. Как только мы их проверим, будет релиз.

Yii 2.0.31

Выпущен свежий релиз Yii 2. В него вошли несколько исправлений и пара улучшений. В Request была добавлена поддержка заголовка Forwarded для прокси. Также расширена поддержка конфигурации для DI-контейнера в стиле Yii 3.

Но главное в релизе — поддержка PHP 7.4. Было не очень просто достичь её не теряя совместимость со старыми версиями PHP. Несмотря на то, что было потрачено немало времени на поиск возможности сделать это безболезненно, мы справились.

Yii 3

Разработка в общем продвигается, но не так быстро, как хотелось бы. Похоже, прикидки по дате релиза были слишком оптимистичны, но, тем не менее, я всё ещё думаю, что мы тегнем некоторые пакеты Yii 3 и сделаем процесс установки Yii 3 проще, предоставив шаблон приложения. Это будет или до нового года, или в начале следующего.

Что же мы успели с середины ноября?

Концепты, обсуждения и туториалы

Код

Документация

Корректировки внутренних гайдлайнов

Общая инфраструктура

Финансы

Мы поучаствовали в бета-тестировании финансовой платформы GitHub. Вместе с командой GitHub всё настроили. Также настроили Tidelift, так что теперь помочь Yii финансово можно ещё двумя способами.

Tidelift оказался полезен ещё и с другой стороны. У них отличные чеклисты, например, нужно добавить в каждый репозиторий информацию о том, как репортить проблемы с безопасностью. Во время выполнения этих чек-листом были найдены и поправлены некоторые проблемы в репозиториях Yii.

Единтственный минус — Tidelift не так прозрачен, как OpenCollective. Но обещаю, что буду забирать из OpenCollective меньше на сумму получаемую через Tidelift. Надеюсь, это позволит большему количеству разработчиков, работать над Yii. Если вы хотите тратить на Yii 3 больше времени, но не можете по финансовым причинам, пишите мне (Александру Макарову). Попробуем что-то придумать...

Спасибо!

Спасибо всем кто помогает Yii финансово. Текущий прогресс без вас был бы невозможен.

Отдельное спасибо Somogyi Márton, roxblnfk, Павлу Иванову, Дмитрию Дерепко, thenotsoft за отличные pull request-ы.

читать далее...
Yii 2.0.30, расширения и Yii 3

Всем привет! Вчера я тегнул релизы Yii 2 и расширений и попытался просуммировать прогресс, планы и проблемы Yii 3.

В качестве бонуса опубликовал коллекцию хейт-постов на тему Yii как GitHub репозиторий.

Yii 2

Yii 3

Прогресс:

Планы:

  1. Тегнуть хотя-бы несколько относительно стабильных пакетов к концу года.
  2. Переделать валидацию. Сейчас она делает две вещи: валидирует скалярные значения (assertion) и валидирует набор данных набором assertion-ов. Выглядит очень красиво, но есть проблема с валидацией зависимых данных. Вероятно, будем возвращаться к стилю Yii 2.
  3. Доделать конфигурацию. roxblnfk проделал огромную работу над прототипом. Есть черновики постов, которые будут доделаны и опубликованы на форумах для дальнейшего обсуждения.
  4. Подготовить шаблон приложения. Пока что yiisoft/yii-demo служит нашей песочницей.

Фонд

Текущий бюджет OpenCollective позволяет мне фокусироваться на управлении Yii в целом, релизах Yii 2, ревью кода и немного на самом коде. Сообщество очень сильно помогает, но я уверен, что ещё один сфокусированный на коде член команды ускорил бы разработку Yii 3 очень значительно.

Для того, чтобы увеличить бюджет я собираюсь настроить Tidelift. Насколько я слышал, для компании очень непросто поддержать Yii финансово через OpenCollective так как не совсем понятно, как это провести через бухгалтерию.

Спасибо!

Спасибо всем кто помогает Yii финансово. Текущий прогресс без вас был бы невозможен.

Финансовая помощь — не единственный способ поддержки. Другие способы не менее ценны. Отдельное спасибо нашим постоянным контрибьютерам, которые делятся опытом, отсматривают код, переводят документацию и присылают отличные pull request-ы.

читать далее...
Расширения и Yii 3

Всем привет! Это опять Александр.

// если хотите чтобы в следующий раз это были вы, пишите

Сегодня у нас три релиза расширений для Yii 2:

  • Debug 2.1.11. Добавлена дополнительная сборка мусора, поправлены ошибки, добавлена навигация между запросами.
  • Auth client 2.2.5. Устаревшая зависимость spomky-labs/jose заменена на JWT Framework.
  • Redis 2.0.11. Добавлена поддержка Redis cluster.

После неформального анонса желания выпустить альфу Yii 3 к концу года многие контрибьютеры активизировались. Стало жарко, поэтому что-то из происходящего, вероятно, не попало в резюме ниже.

Завтра я направляюсь в Болгарию на Bulgaria PHP. Буду рассказывать про пакетные принципы. Доклад не совсем про Yii 3, но как раз эти принципы повлияли в той или иной степени на текущую структуру пакетов.

Это последняя запланированная на данный момент конференция. Собираюсь ещё плотнее засесть за фреймворк.

Но хватит про мои планы. Давайте посмотрим, что нового в Yii 3.

Расширена документация:

Спасибо за поддержку!

// Я заметил что многие не знают что Yii можно поддержать не только кодом, но и финансово через OpenCollective. Все доходы и расходы фонда полностью прозрачны и направлены на благо фреймворка и его инфраструктуры.

читать далее...
Yii 2.0.29, расширения и прогресс по Yii 3

Сегодня релизный вторник. Интенсивный. С тех пор как на нескольких конференциях я упомянул что надеюсь и стараюсь тегнуть альфа-версию Yii 3 к концу года, частота pull request-ов в пакеты Yii 3 увеличилась. И, что очень хорошо, они не тривиальные, а те, что действительно приближают дату релиза. Спасибо тем, кто их прислал и извините что время фидбека и ревью сейчас немного увеличено.

Ну а теперь, к релизам Yii 2 и новостям Yii 3...

Yii 2

Итак, вышел Yii 2.0.29. Как обычно, в релиз вошло несколько минорных исправлений. Кроме того, добавлена совместимость с PostgreSQL 12 и начала поддерживаться часть синтаксиса DI-контейнера из Yii 3. Текущий синтаксис никуда не делся. Поддержка нового сделана ради того, чтобы хоть немного смягчить будущую миграцию на новый фреймворк.

Также были выпущены два расширения:

Yii 3

Обсуждения шаблона приложения показали что лучшим решением будет упростить шаблон по максимуму. Изначальная задумка хоть и была интересной, но разобраться в ней удалось не многим.

Somogyi Márton продолжает присылать отличные штуки. В этот раз это network resolver, который помогает безопасно получить информацию о реальном IP пользователя при работе с несколькими прокси-серверами, такими как балансировщик нагрузки.

Кроме этого, Somogyi улучшил пакет data добавив дополнительную валидацию в фильтрах, что особенно полезно при построении фильтров на основе массива критериев.

Александр Картавенко опробовал на travis-билде пакета cache Phan, инструмент для статического анализа.

Павел Иванов и Bill Heaton сделали несколько улучшений в Yii development tool, такие как более точные сообщения об ошибке при клонировании, команда "lint" и немного рефакторинга.

Также были написаны новые документы и главы для руководства:

Спасибо!

Спасибо всем, кто поддерживает Yii. Без вас бы ничего не получилось!

Финансовая поддержка - не единственный способ поддержать Yii. Другие формы поддержки не менее ценны.

Отдельное спасибо тем, кто давно с нами. Тем, кто помогает нам советами, code review, переводами и pull request-ами.

читать далее...
Yii 2.0.28, расширения и прогресс по Yii 3

Свежие новости от команды Yii.

Yii 2

Была выпущена новая версия 2.0.28. Она включает в себя важное исправление безопасности для Request::getUserIP() при работе с Request::$trustedHost и Request::$ipHeaders.

Также в релиз вошли исправления для обработки ошибок в ActiveField PHP 7 и yii\i18n\Formatter который неправильно использовал сложные строки локалей при выборе языка перевода.

Были выпущены следующие расширения:

Yii 3

На официальном форуме была создана тема "как начать контрибьютить в Yii 3".

Обсуждения с Somogyi Márton и его улучшения вылились в улучшение архитектуры и больше возможностей пакета "yiisoft/data". Он будет использован как основа для списков и гридов. Переписка в тикетах и pull request может быть довольно интересна.

Интерфейс дружественных исключений, который был упомянут в прошлый раз, был выделен в отдельный пакет "yiisoft/friendly-exception". Теперь любой пакет может реализовать интерфейс если хочет, чтобы Yii или другой совместимый обработчик ошибок показывал дополнительную информацию. Обсуждение на форуме.

@romkatsu написал юнит-тесты для redirect middleware.

Дмитрий Дерепко поправил yiisoft/log-target-email.

Благодаря Павлу Иванову DI контейнер теперь обращается к автозагрузке классов если определения в самом контейнере нет. Это позволяет не прописывать явно классы без интерфейса.

Рустам Мамадаминов реализовал middleware для аутентификации.

Павел Чаплыгин портировал компонент Flash.

Рендеринг view стал умнее. Теперь коллизии имён параметров невозможны.

Пакет RBAC приведён в рабочее состояние. Есть несколько концептуальных изменений по сравнению с Yii 2.

В общем мы приближаемся к состоянию когда можно выпустить альфа-версию.

Спасибо!

Спасибо всем, кто участвует в разработке и финансировании Yii. Вместе у нас всё получится.

читать далее...
Yii 2.0.27, Debug 2.1.9 и прогресс по Yii 3

Yii 2

Yii 2 получил очередной релиз версии 2.0.27. В этот раз кроме багфиксов в него вошли несколько улучшений.

Также обновилось расширение debug 2.1.9. В него вошло всего одно, но очень важное, исправление. Неправильно отображалось время относительно прошлого логирования на странице "logs".

Yii 3

  • Wilmer Arambula продолжает заниматься портированием пакетов из Yii 2. На этот раз widgets.
  • Тесты, помогающие стабилизировать код фреймворка, очень важны. romkatsu поделился тестами для CSRF middleware и callback middleware.
  • yiisoft/data прошёл стадию прототипа и теперь является вполне рабочим пакетом благодаря Павлу Чаплыгину и Somogyi Márton. Дизайн пакета ещё будет меняться, но он точно станет отличной базой для построения REST API и дата-виджетов, таких как GridView.
  • Пакет yiisoft/core был убит. Репозиторий был удалён и затем восстановлен чтобы сохранить issue для истории. Общего пакета "ядро", который занимается всем как в Yii 2 не будет. Вместо него будут "объединяющие" пакеты вроде yiisoft/yii-web. Они будут более сфокусированы: классический веб, консоль и так далее.
  • Был проведён эксперимент по использованию Cycle ORM. Первые результаты выглядят многообещающе и, вероятно, Cycle станет одной из официально рекомендуемых библиотек для работы с базами данных.
  • Другой эксперимент по использованию RoadRunner как вебсервер показал вкусные цифры касательно производительности, но была проблема с сессиями. Сейчас она исправлена. Несмотря на то, что в при написании кода стоит очень аккуратно обращаться с состоянием, разница в производительности делает его привлекательным и мы будем проверять фреймворк чтобы он работал в подобных окружениях.
  • Пакет yiisoft/strings был доработан ещё немного.
  • Обработчик ошибок получил возможность получить стектрей для фатальных ошибок, которая присутствовала в Yii 2.
  • Ещё одна интересная возможность для обработчика ошибок — "дружественные исключения". Реализовав интерфейс FriendlyExceptionInterface можно дать пользователю инструкции по тому, как исправить проблему. Они будут показаны на странице исключения.
  • Обновился roadmap.

На англоязычных форумах идут интересные дискуссии. Стоит почитать "Using Cycle ORM" и "Yii3 Properties".

Несколько человек высказали желание заняться портированием слоя для работы с базами данных из Yii 2. Если всё пойдёт хорошо, то можно будет работать в привычном стиле... или использовать Cycle или Doctrine.

читать далее...
Yii 2.0.26 и прогресс по Yii 3

На прошлой неделе выпустить релизы не удалось так как часть pull request-ов в Yii 2 нуждались в полировке, но сегодня релиз был тегнут.

Обновление исправляет ряд ошибок и ничего не должно ломать.

Что касается Yii 3, работы идут. В частности, есть прогресс по новым провайдерам данных. Код ещё не финальный, местами грубый. Общая идея описана на форуме.

Параллельно с пакетом data, Wilmer Arambula продвинулся в работе над view в процессе добавив дополнительные методы в пакет files.

Hubert Strychalski реализовал несколько важных тестов для middleware.

читать далее...