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

Это второй выпуск новостей, выпущенный на карантине. С прошлого выпуска карантинные меры несколько усилили. Кое-что успело подстроиться и прийти в норму, но много нет. В любом случае, пока, на сколько я знаю, в сообществе Yii все живы и здоровы, так что карантин мы точно переживём и останавливаться не собираемся.

Как многие знают, я собираю конференцию PHP Russia и вирус, конечно же, на неё повлиял. Плохо то, что пришлось её перенести (пока это сентябрь, но как получится на самом деле не знает никто). Хорошая новость в том, что 13 мая состоится бесплатная PHP Russia Online. Заходите, участвуйте. Единственно, необходимо зарегистрироваться заранее. Сам я в этот раз не выступаю, но уверен, что к выходу Yii 3 мы сделаем ещё один YiiConf.

Будьте здоровы и спасибо за поддержку!

Yii 2

Вышли новые версии как самого фреймворка, так и расширений.

Yii 3

Если вы читали предыдущий выпуск, то знаете что у нас есть Trello доска с планами по Yii 3.

А теперь про то, что было сделано.

  • Во-первых, была выпущена стабильная версия пакета Injector. Пакет на 100% покрыт тестами и имеет довольно высокую оценку по качеству кода. Доступно руководство по использованию и алгоритму работы. Так как пакет фреймворко-независимый, то использовать его можно с любым PHP кодом. В Yii 3 пакет является очень важным и используется для авто-подстановки зависимостей в обработчиках роутов и виджетах.
  • Пакет strings пополнился методами StringHelper::truncateBegin() и StringHelper::truncateMiddle().
  • Были добавлены новые тесты в Queue. Сам пакет ещё в разработке.
  • В router сделаны важные исправления и улучшения. Он стал более производительным из-за ленивой загрузки всего. Конфигурация несколько поменяла синтаксис.
  • HeaderHelper, помогающий разбирать заголовки HTTP, был перенесён из yii-web в http.
  • Метаданные PhpStorm были добавлены в http и yii-web. С ними дополнение в IDE и проверки будут работать ещё лучше.
  • Веб приложение обзавелось новым событием AfterEmit.
  • Был реализован удобный способ формирования ответов данными и их форматирования в JSON, XML и другие форматы. Он станет основной для реализации основанных на API приложений.
  • event-dispatcher ConcreteProvider был объединён с Provider. Также было запрещено напрямую добавлять обработчики событий во время выполнения приложения.
  • Пакет yii-debug был лучше интегрирован с event manager. UI пока не готов.
  • Пакет validator пополнился правилами AtLeast и Json.
  • Код mailer был почищен.
  • Фабрика пакет widget теперь инициализируется автоматически, регистрировать её явно в приложении больше не нужно.
  • Мы оттестировали совместимость с Composer 2 всех используемых нами плагинов. В результате поправлен fxpio/foxy, который используется для установки ресурсов пакета Bootstrap 4.
  • Для composer-config-plugin были написаны тесты и произведён серьёзный рефакторинг. Также плагин теперь полностью совместим с Composer 2.
  • Проблемы с сессиями в yii-web были исправлены.
  • В пакете RBAC был реализован рекурсивный поиск ролей.
  • В пакет array добавлены модификаторы массива. Это специальные маркеры, которые меняют способ слияния массивов, что полезно для конфигов. Метод multisort был перемещён в отдельный класс ArraySorter.
  • factory и di были почищены и улучшены, включая производительность. Стало возможным передавать параметры конструктора по имени или порядку. Также добавлена поддержка конфигурирования иммутабельных объектов.
  • Все виджеты теперь иммутабельные.
  • KeysetPaginator из пакета data был отрефакторен. Пример его использования добавлен в демо.
  • Был создан пакет yii-form. Он в ещё очень активной разработке, но уже делает приятней работу с формами.
  • Rate limiter переехал в отдельный пакет.
  • Отрефакторен код cookies, добавлена коллекция.
  • В пакет Yii demo были добавлены примерны многих улучшений, перечисленных выше. Также был добавлен удобный способ объявлять обработчики событий.

Нам очень важна конструктивная критика. Оставляйте её в issue соответствующего пакета или на форумах.

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

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

Фонд

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

Благодаря фонду удалось дать больше времени на Yii roxblnfk и Wilmer Arambula. В планах расширить это на других разработчиков.

На странице OpenCollective мы более чётко определили политику выплат:

Принимаются заявки на возмещение времени, потраченного в соответствии с ценностями Yii Software, то есть на поддержку, продвижение и разработку Yii и другого OpenSource, связанного с фреймворком.

  • Любой, кто помогает Yii может использовать фонд. В приоритете те, кто делает больше по чёткому плану и делает это вместо коммерческой работы, то есть в ущерб своим доходам.
  • Сумма не должна превышать то, что может позволить себе фонд учитывая остальные траты.
  • Траты и планы согласуются заранее с командой Yii.
  • Необходимо записывать сколько часов на что потрачено.

Под строгим запретом любые траты, не соответствующие целям Yii Software или непропорционально большие по отношению к остальным.

❤️ Спасибо!

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

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

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

С прошлого выпуска прошёл месяц, за который в мире много чего успело поменяться. Прежде всего, из-за вируса. Отменились почти все конференции, сошли на нет путешествия, был введён карантин, работа из дома с детьми 24/7 стала обычным делом. Начал изменяться общий ландшафт IT.

Что осталось неизменным, так это потребность в надёжном и удобном фреймворке для разработки и наше стремление выпустить Yii 3. Я рад, что вы поддерживаете нас несмотря на ситуацию.

Будьте здоровы и приятного чтения.

Спасибо!

Yii 2

Вышла версия 2.0.33. Исправлено 22 ошибки, сделано 4 улучшения.

Вышли расширения:

Yii 3

Чтобы лучше понимать картину разработки мы завели доску в Trello.

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

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

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

❤️ Спасибо!

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

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

читать далее...
Новости 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. Вместе у нас всё получится.

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