Yii: уроки прошлого и будущее...Yii: уроки прошлого и...
Transcript of Yii: уроки прошлого и будущее...Yii: уроки прошлого и...
![Page 2: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/2.jpg)
Обо мне
• 10+ лет в IT: Java, PHP, JavaScript etc. • Пишу, докладываю. • Занимаюсь OpenSource. • Член команды Yii и PHP-FIG. • Siemens, Wrike, CleverTech, Stay.com, Skyeng. • Делаю PHP Russia.
![Page 4: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/4.jpg)
Поговорим про
Правильные решения и ошибки, сделанные за годы разработки Yii.
![Page 5: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/5.jpg)
Попробуйте применить это к своим проектам
• Подумайте об ошибках в своём проекте. • Составьте список. • Пришлите сегодня на [email protected]. • Самый интересный в 18:00 получит билет
на PHP Russia.
![Page 6: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/6.jpg)
Yii нельзя назвать плохим фреймворком, скорее наоборот
![Page 7: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/7.jpg)
Scope
То, что хочется решить. Что должен охватить продукт.
![Page 8: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/8.jpg)
Не берите слишком много
• Очень много фич. • И бэкенд и фронтенд. • Два разных шаблона приложения. • Почти все SQL-базы, Mongo, Redis,
ElasticSearch, Sphinx. • CUBRID - зачем?! • PJAX - мы не по frontend...
![Page 9: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/9.jpg)
Количество issue в релизе.
![Page 10: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/10.jpg)
Примеры из коммерческих проектов
• Стремление сделать всё и сразу. • Релизы раз в год.
![Page 11: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/11.jpg)
Архитектура
![Page 12: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/12.jpg)
Можно делать плохо
• Yii::app-> хотя есть DI. • Код в view. • Проверять права в AR....
![Page 13: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/13.jpg)
Фреймворк может попытаться усложнить неправильное использование, но исключить его не в состоянии.
![Page 14: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/14.jpg)
Нужен опытный лид бить по рукам.
![Page 15: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/15.jpg)
Нарушали SOLID
• В моделях валидация, лейблы, AR. • Есть толстые интерфейсы. • Наследование где лучше было сделать
композицию....
![Page 16: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/16.jpg)
В местах с нарушениями много изменений. Высокий churn. Ломается именно там.
![Page 17: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/17.jpg)
Попытки исправить ошибки вместо кидания exception
• PHP-way :( • Проблема уходит дальше. • Слишком много вариантов.
![Page 18: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/18.jpg)
Не вооружились многими стандартами
• Часть PSR. • SemVer.
![Page 19: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/19.jpg)
Завязка на controller/action в роутинге
• DDD, cohesion по use-case. • «Классика», cohesion по типу (все на одно
лицо).
![Page 20: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/20.jpg)
globals
• YII_DEBUG. • Yii::. • Хрупкость. • Тяжело писать тесты.
![Page 21: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/21.jpg)
MVC и Model
• Плохое название. • M !== один класс ActiveRecord.
![Page 22: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/22.jpg)
Стиль кода не как у всех
• Yii 1.1 – ужас! • Yii 2.0 – почти хорошо. namespace, _privateProperty.
• Не надо так! • StyleCI.
![Page 23: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/23.jpg)
DI-контейнер и конфиг «под Yii»
• Туча виджетов и обёрток.
![Page 24: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/24.jpg)
Релизный цикл
• Слишком короткий — плохо. • Слишком длинный — плохо. • Непонятный — ужасно. • https://www.yiiframework.com/release-cycle • Обратная совместимость. • Релизьте чаще.
![Page 25: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/25.jpg)
Что мы сделали хорошо
![Page 26: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/26.jpg)
Понятный код
• Последовательные действия в одном месте. • Названия отражают суть, а не паттерны.
![Page 27: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/27.jpg)
Производительность
• Yii быстро работает без кеша.
![Page 28: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/28.jpg)
Множество крутых штук
• Виджеты • Gii • I18n • Гриды и data provider-ы • Безопасность
![Page 29: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/29.jpg)
Документация
• Есть ко всему.
![Page 30: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/30.jpg)
Особенности
• Не только Yii, все фреймворки. Symfony меньше, Laravel больше.
• Часто пример пишется прямо в контроллере.
• Правильные слои — документация распухнет. Порог входа повысится.
• Люди воспринимают буквально
![Page 31: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/31.jpg)
Сообщество / люди
![Page 32: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/32.jpg)
Планы?
• Отсутствие roadmap демотивирует. • Те, кто хочет что-то сделать не понимают
что. • Неизвестность заставляет выдумывать и
выдумывать самое плохое.
![Page 33: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/33.jpg)
Планы!
• Делитесь планами. • Пишите гайдлайны. • Будьте готовы помочь.
![Page 34: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/34.jpg)
Маркетинг
Маркетинг is king
![Page 35: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/35.jpg)
Деньги и время
![Page 36: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/36.jpg)
• Занимались Yii в свободное время. • Мало рефлексировали, зарывались в
текущие проблемы. • OpenCollective!
![Page 37: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/37.jpg)
Мотивация
![Page 38: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/38.jpg)
• Never give up. • Хейтеры будут хейтить. • Иногда отказаться от чего-то необходимо:
PJAX, CUBRID, HTTP Client, свой request-response.
• Не стоит жечь себя и других.
![Page 39: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/39.jpg)
Yii 3.0
• Будет. • Будут учтены косяки.
![Page 40: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/40.jpg)
Roadmap
• https://github.com/yiisoft/docs • PSR (HTTP request-response, middleware,
container, events). • DDD-совместимость. • Всё хорошее из Yii 2. • Отделение консоли от веба. • Разбиение на части, которые можно
использовать отдельно. • Строгая типизация.
![Page 41: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/41.jpg)
• SOLID. • Убийство иерархии классов. • Убийство большинства wrapper-
расширений. • Отказ от нестандартных объектов. • Swoole / RoadRunner.
![Page 42: Yii: уроки прошлого и будущее...Yii: уроки прошлого и будущее Александр Макаров Обо мне • 10+ лет в IT: Java,](https://reader033.fdocument.pub/reader033/viewer/2022060906/60a133033157a055b837041e/html5/thumbnails/42.jpg)
Время вопросов!
• https://github.com/yiisoft/ • yiiframework.ru • yiiframework.com • [email protected] • @sam_dark