SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Куда катится PHP, а также
про Yii и другие
фреймворки
Александр Макаров
Надо валить?!
• Разработчики мигрируют на
– Ruby
– Python
– Java
– C++
– …
• Мигрируют потому что PHP отстой?!
PHP отстой, но не настолько!
• Отличный выбор для веб разработки.
• Живее всех живых.
• Язык программирования — всего лишь инструмент. Один из.
• С хорошим фреймворком косяки вылезают не так часто.
PHP хорош для бизнеса
• Ориентирован на веб.
• Много готового из коробки.
• Делает всё проще и легче.
• Просто найти и заменить разработчиков.
• Меньше риска.
• Меньше стоимость проекта.
Хорошо для бизнеса — хорошо
для разработчика
PHP стремится к простоте и
улучшается
• API хеширования паролей.
• Генераторы.
• Больше единообразия.
• Встроенный вебсервер.
• Лучше производительность.
• Лучше синтаксис.
• …
И это замечательно!
А что фреймворки?
Сначала о хорошем
• Github стал фактически стандартом для хорошего PHP-кода.
• Хорошо распространился PSR-0.
• Есть как минимум несколько стабильных фреймворков, готовых к
коммерческому использованию. То есть поддерживаемых и обратно
совместимых.
А теперь о не очень хорошем…
«Enterprise»
• ZF 2 и Symfony 2 очень «enterprise».
• Ещё более, чем были ZF1 и Symfony 1.
Весь этот “enterprise” слишком
сложен
Все проблемы
программирования можно
решить дополнительным слоем
абстракции… кроме проблемы
избыточной абстракции
David Wheeler
Отзывы о ZF2 и Symfony2
«ZF2 слишком «научный». По нему и его
дизайну можно кандидатскую написать. Не
поймите меня неправильно, я люблю
стандарты, паттерны и т.д., но разработчики
ZF2 слишком сильно окунулись в «науку».
Symfony2 в этом плане получше, но
недостаточно»
Зачем делать сложно, если
можно делать просто?
Сделать просто сложнее, чем
сделать сложно
Почему ZF2 такой?
• Zend — коммерческая компания. ZF — дополняющий продукт к IDE, Zend
server и т.д.
• У ZF2 необходимое и достаточное качество. Упрощать интерфейс и делать
RAD — трата времени (и денег) на то, что не принесёт дополнительной
прибыли. Скорее наоборот.
• 80% проектов/клиентов не очень-то интересны. Zend может себе это
позволить.
• Хотят получить разочаровавшиеся в J2EE компании.
• Консалтинг не нужен, если продукт недостаточно сложен ;)
Zend успешна
Что с Symfony 2?
• Пытаются быть «enterprise» (=сложными), как и ZF2.
• Sensio labs — коммерческая компания. Зарабатывает на саппорте и
консалтинге.
• http://fabien.potencier.org/article/65/why-symfony
• Более практичны, чем ZF2.
• Всё-таки довольно сложны.
• Сознательно принесли в жертву RAD.
Что же плохого в «enterprise»?
• Напирают на паттерны. Их видно в интерфейсе.
• Легче тестировать, но заметно сложнее писать код, отлаживать и изучать.
• Почти невозможно отдать рутину менее компетентным разработчикам
предварительно не потратив много времени на обучение.
• Высокий риск для того, кто заказывает музыку.
Всё это похоже на прошлое Java…
• “Their main thesis to support that complexity is… hold your breath… fasten your
seatbelts: if it were easier, more stupid people would be using it!. Ta-da!!”
• “J2EE is no way simple. However the reality is simple: for J2EE to survive — we
have to make it simple to build, deploy and manage”
В Java всё идёт к упрощению
• Play
• Apache Wicket
• И даже Spring
SF2 и ZF2— зло?
Нет. Просто другая ниша.
Enterprise — не только сложность
• Стабильный API.
• Хорошо оттестированный код.
• Обратно-совместимые регулярные релизы.
• Гарантия поддержки на последующие N лет.
• Хорошая документация.
• Коммерческая поддержка, тренинги.
• …
И что делать практикам?
Практичные фреймворки
• Без дополнительных сложностей.
• Легко изучить.
• Меньше магии.
• Меньше конфигурации.
• Как можно более простой API.
Если есть ещё и всё хорошее от
enterprise — идеал
Yii — практичный фреймворк
Мифы о фреймворках
• Если фреймворк переизобрёл колесо, то он плохой.
• Если используется контейнер DI и везде клёвые паттерны, то фреймворк
хороший.
• Если фреймворк сделал фичу первым, то он лучше остальных.
• Слабо связанный фреймворк всегда лучше.
• Если нет фичи X в фреймворке, то он плохой.
Действительно важно
• Легко изучать.
• Легко отлаживать и исправлять ошибки.
• Не мешает работать и использовать сторонний код.
• Дружелюбное активное сообщество.
• Обратно совместим и стабилен.
• Нет затыков при попытках настроить и расширить.
• Фреймворк должен нравится ;)
Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010
2004 2005 2007 2008
**
*
*
20112006

Что такое Yii?
 PHP5 MVC.
 Приятный API.
 DAO, AR, миграции.
 Построитель форм.
 Темы.
 Тестирование.
 Хорошая
документация.
 Большое
дружелюбное
сообщество.
 Кеширование.
 RBAC.
 Консоль.
 error handler, log.
 Gii.
 I18n(CLDR).
 Виджеты.
 BSD.
Всё ещё остаётся самым
быстрым современным PHP-
фреймворком (кроме
PECL, микро)
• Это не наш тест.
http://docs.phalconphp.com/en/latest/refere
nce/benchmark/hello-world.html
Становится ещё быстрее и менее
требовательнее к памяти
благодаря сообществу
*intranet
1. Сбалансированный
2. Стабильный
3. Гибкий
4. Хорошо документирован
5. Не мешает
В Yii нет ни одного
setMyCoolFactoryDependencyInje
ctionContainer()
Документация очень важна
• Документируем сразу как пишем код.
• Основная документация переводится на 16 языков.
• Не мешает работать и использовать сторонний код.
• phpdoc.
• Примеры.
• Отличные книги.
Yii может работать с
компонентами Symfony 2 и ZF2.
Они ведь именно для этого,
правда? ;)
Yii — практичный фреймворк
The end.
• Вопросы? Замечания?
Предложения?
• sam@rmcreative.ru
• @sam_dark
• http://www.yiiframework.com/

Weitere ähnliche Inhalte

Was ist angesagt?

О фреймворках Backend conf 2016
О фреймворках Backend conf 2016О фреймворках Backend conf 2016
О фреймворках Backend conf 2016Roman Ivliev
 
Всему своё время Highload Junior 2016
Всему своё время   Highload Junior  2016Всему своё время   Highload Junior  2016
Всему своё время Highload Junior 2016Roman Ivliev
 
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидахОмские ИТ-субботники
 
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Sigma Software
 
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновAnton Piskunov
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Oleg Poludnenko
 
«Путь джуниора глазами джуниора» - Никита Сердюк
«Путь джуниора глазами джуниора» -  Никита Сердюк«Путь джуниора глазами джуниора» -  Никита Сердюк
«Путь джуниора глазами джуниора» - Никита СердюкITсonnect ITconnect
 
ньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствВладимир Кожаев
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковAlex Tumanoff
 
My talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruMy talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruAlex Chistyakov
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решенияВладимир Кожаев
 
UWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворкахUWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворкахAlexander Makarov
 
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахAlex Chistyakov
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораSQALab
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQubePositive Hack Days
 

Was ist angesagt? (20)

О фреймворках Backend conf 2016
О фреймворках Backend conf 2016О фреймворках Backend conf 2016
О фреймворках Backend conf 2016
 
Всему своё время Highload Junior 2016
Всему своё время   Highload Junior  2016Всему своё время   Highload Junior  2016
Всему своё время Highload Junior 2016
 
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
 
Ryazan
RyazanRyazan
Ryazan
 
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
 
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демонов
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
 
Php. dark and light side
Php. dark and light sidePhp. dark and light side
Php. dark and light side
 
«Путь джуниора глазами джуниора» - Никита Сердюк
«Путь джуниора глазами джуниора» -  Никита Сердюк«Путь джуниора глазами джуниора» -  Никита Сердюк
«Путь джуниора глазами джуниора» - Никита Сердюк
 
ньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройств
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис Цыплаков
 
My talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruMy talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ru
 
мир без Jsp. thymeleaf 2.0
мир без Jsp. thymeleaf 2.0мир без Jsp. thymeleaf 2.0
мир без Jsp. thymeleaf 2.0
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Python
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
 
UWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворкахUWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворках
 
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектах
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается Yii
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 

Ähnlich wie Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (Stay.com)

Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiDevconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiAlexander Makarov
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
 
Creating Open Source Projects
Creating Open Source ProjectsCreating Open Source Projects
Creating Open Source ProjectsAlexei Yuzhakov
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
 
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9OdessaFrontend
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ruRoman Ivliev
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла0leGG
 
О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)Ontico
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"IT Event
 
Roman Marinsky "Ретроспектива вивчення UI автоматизації"
Roman Marinsky "Ретроспектива вивчення UI автоматизації"Roman Marinsky "Ретроспектива вивчення UI автоматизації"
Roman Marinsky "Ретроспектива вивчення UI автоматизації"Dakiry
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python? Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python? Mykhailo Poliarush
 
PHP micro-frameworks (PHP микрофреймворки)
PHP micro-frameworks (PHP микрофреймворки)PHP micro-frameworks (PHP микрофреймворки)
PHP micro-frameworks (PHP микрофреймворки)Bohdan Vorona
 
Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»SpbDotNet Community
 
Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...SBTech
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRailsPavel Gabriel
 
Go для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаGo для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаUP2IT
 

Ähnlich wie Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (Stay.com) (20)

Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiDevconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
 
Как разраба
Как разрабаКак разраба
Как разраба
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 
Creating Open Source Projects
Creating Open Source ProjectsCreating Open Source Projects
Creating Open Source Projects
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест Джоэла
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ru
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
 
Roman Marinsky "Ретроспектива вивчення UI автоматизації"
Roman Marinsky "Ретроспектива вивчення UI автоматизації"Roman Marinsky "Ретроспектива вивчення UI автоматизації"
Roman Marinsky "Ретроспектива вивчення UI автоматизації"
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python? Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python?
 
PHP micro-frameworks (PHP микрофреймворки)
PHP micro-frameworks (PHP микрофреймворки)PHP micro-frameworks (PHP микрофреймворки)
PHP micro-frameworks (PHP микрофреймворки)
 
Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»
 
Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRails
 
Go для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаGo для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчика
 

Mehr von Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Mehr von Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (Stay.com)

  • 1. Куда катится PHP, а также про Yii и другие фреймворки Александр Макаров
  • 2. Надо валить?! • Разработчики мигрируют на – Ruby – Python – Java – C++ – … • Мигрируют потому что PHP отстой?!
  • 3. PHP отстой, но не настолько! • Отличный выбор для веб разработки. • Живее всех живых. • Язык программирования — всего лишь инструмент. Один из. • С хорошим фреймворком косяки вылезают не так часто.
  • 4. PHP хорош для бизнеса • Ориентирован на веб. • Много готового из коробки. • Делает всё проще и легче. • Просто найти и заменить разработчиков. • Меньше риска. • Меньше стоимость проекта.
  • 5. Хорошо для бизнеса — хорошо для разработчика
  • 6. PHP стремится к простоте и улучшается • API хеширования паролей. • Генераторы. • Больше единообразия. • Встроенный вебсервер. • Лучше производительность. • Лучше синтаксис. • …
  • 9. Сначала о хорошем • Github стал фактически стандартом для хорошего PHP-кода. • Хорошо распространился PSR-0. • Есть как минимум несколько стабильных фреймворков, готовых к коммерческому использованию. То есть поддерживаемых и обратно совместимых.
  • 10. А теперь о не очень хорошем…
  • 11. «Enterprise» • ZF 2 и Symfony 2 очень «enterprise». • Ещё более, чем были ZF1 и Symfony 1.
  • 12.
  • 13. Весь этот “enterprise” слишком сложен
  • 14. Все проблемы программирования можно решить дополнительным слоем абстракции… кроме проблемы избыточной абстракции David Wheeler
  • 15. Отзывы о ZF2 и Symfony2 «ZF2 слишком «научный». По нему и его дизайну можно кандидатскую написать. Не поймите меня неправильно, я люблю стандарты, паттерны и т.д., но разработчики ZF2 слишком сильно окунулись в «науку». Symfony2 в этом плане получше, но недостаточно»
  • 16. Зачем делать сложно, если можно делать просто?
  • 17. Сделать просто сложнее, чем сделать сложно
  • 18. Почему ZF2 такой? • Zend — коммерческая компания. ZF — дополняющий продукт к IDE, Zend server и т.д. • У ZF2 необходимое и достаточное качество. Упрощать интерфейс и делать RAD — трата времени (и денег) на то, что не принесёт дополнительной прибыли. Скорее наоборот. • 80% проектов/клиентов не очень-то интересны. Zend может себе это позволить. • Хотят получить разочаровавшиеся в J2EE компании. • Консалтинг не нужен, если продукт недостаточно сложен ;)
  • 20. Что с Symfony 2? • Пытаются быть «enterprise» (=сложными), как и ZF2. • Sensio labs — коммерческая компания. Зарабатывает на саппорте и консалтинге. • http://fabien.potencier.org/article/65/why-symfony • Более практичны, чем ZF2. • Всё-таки довольно сложны. • Сознательно принесли в жертву RAD.
  • 21. Что же плохого в «enterprise»? • Напирают на паттерны. Их видно в интерфейсе. • Легче тестировать, но заметно сложнее писать код, отлаживать и изучать. • Почти невозможно отдать рутину менее компетентным разработчикам предварительно не потратив много времени на обучение. • Высокий риск для того, кто заказывает музыку.
  • 22. Всё это похоже на прошлое Java… • “Their main thesis to support that complexity is… hold your breath… fasten your seatbelts: if it were easier, more stupid people would be using it!. Ta-da!!” • “J2EE is no way simple. However the reality is simple: for J2EE to survive — we have to make it simple to build, deploy and manage”
  • 23. В Java всё идёт к упрощению • Play • Apache Wicket • И даже Spring
  • 24. SF2 и ZF2— зло?
  • 26. Enterprise — не только сложность • Стабильный API. • Хорошо оттестированный код. • Обратно-совместимые регулярные релизы. • Гарантия поддержки на последующие N лет. • Хорошая документация. • Коммерческая поддержка, тренинги. • …
  • 27. И что делать практикам?
  • 28. Практичные фреймворки • Без дополнительных сложностей. • Легко изучить. • Меньше магии. • Меньше конфигурации. • Как можно более простой API.
  • 29. Если есть ещё и всё хорошее от enterprise — идеал
  • 30. Yii — практичный фреймворк
  • 31.
  • 32. Мифы о фреймворках • Если фреймворк переизобрёл колесо, то он плохой. • Если используется контейнер DI и везде клёвые паттерны, то фреймворк хороший. • Если фреймворк сделал фичу первым, то он лучше остальных. • Слабо связанный фреймворк всегда лучше. • Если нет фичи X в фреймворке, то он плохой.
  • 33. Действительно важно • Легко изучать. • Легко отлаживать и исправлять ошибки. • Не мешает работать и использовать сторонний код. • Дружелюбное активное сообщество. • Обратно совместим и стабилен. • Нет затыков при попытках настроить и расширить. • Фреймворк должен нравится ;)
  • 34. Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010 2004 2005 2007 2008 ** * * 20112006 
  • 35. Что такое Yii?  PHP5 MVC.  Приятный API.  DAO, AR, миграции.  Построитель форм.  Темы.  Тестирование.  Хорошая документация.  Большое дружелюбное сообщество.  Кеширование.  RBAC.  Консоль.  error handler, log.  Gii.  I18n(CLDR).  Виджеты.  BSD.
  • 36. Всё ещё остаётся самым быстрым современным PHP- фреймворком (кроме PECL, микро)
  • 37. • Это не наш тест. http://docs.phalconphp.com/en/latest/refere nce/benchmark/hello-world.html
  • 38. Становится ещё быстрее и менее требовательнее к памяти благодаря сообществу
  • 39.
  • 41.
  • 42. 1. Сбалансированный 2. Стабильный 3. Гибкий 4. Хорошо документирован 5. Не мешает
  • 43. В Yii нет ни одного setMyCoolFactoryDependencyInje ctionContainer()
  • 44. Документация очень важна • Документируем сразу как пишем код. • Основная документация переводится на 16 языков. • Не мешает работать и использовать сторонний код. • phpdoc. • Примеры. • Отличные книги.
  • 45. Yii может работать с компонентами Symfony 2 и ZF2. Они ведь именно для этого, правда? ;)
  • 46. Yii — практичный фреймворк
  • 47. The end. • Вопросы? Замечания? Предложения? • sam@rmcreative.ru • @sam_dark • http://www.yiiframework.com/