Your SlideShare is downloading. ×
0
Yii, его разработка и          Yii2            Александр Макаров,                   Yii core team
Что такое Yii?PHP5 MVC.            Мощный кэш.Красивый API.        RBAC, авторизация.DAO, AR, миграции.   Консоль.Р...
*интранет
2   2
Почему?
1.Баланс2.Стабильность3.Гибкость4.Документация
Балансировать непросто• «Правильная» архитектура или  практический опыт?• 20% или 80%• Фичи или ядро?
Стабильность = и зло и добро
Гибкость не в ущерб API•   Меньше абстракции•   Не усложнять•   Интуитивные умолчания•   Скрыть сложность
Как мы документируем—Пишем код — обновляем документацию.—phpdoc.—Примеры.—Применимо для любого проекта.
События 2011 — начала 2012
Что же произошло?• 5 стабильных версий    • Окончательно вылезли  Yii 1.1                  из «подполья»:• Yii 1.1 Applica...
Уроки• Не обещать золотых    • Мероприятия очень  гор, реализовывать      важны  обещанное             • Книги писать• Соо...
За два первые дня—348 watches—61 forks
Сейчас—1337 watches—273 forks
GitHub рулит, но…•   А как же качество реквестов?•   Правильный процесс.•   Работа с сообществом.•   Немного юмора.•   Поз...
Команда—3 активных core-разработчика: qiang, samdark, mdomba.—github.
Что плохо в Yii 1.1?• AR (finder и record не разделены, API).• Некоторые классы в странных местах.• Но это всё мелочи…  Са...
*              *                 *       *                                          2004       2005   2006   2007       2...
Yii 2?
—PHP 5.3.8+               —Улучшаем структуру—Все классы в             —Убиваем лишние namespace (yii) и без    сущности п...
Документация—Larry Ullman, автор 22-х отличных IT-книг и серии статей про Yii: книга + участие в официальной документации....
Yii2: base— Алиасы вида           class MyComponent extends  @yii/base/Component   yiibaseObject                        {—...
Yii2: View Object         — render(), widget(),           beginCache() →           viewObject         — В View: $owner = т...
Yii2: events$post->on(add,          • Не нужна декларацияfunction($event) { ...    • Синтаксис похож на});                ...
Yii2: Query object// Query object$query = new Query;$query->select(id)->from(tbl_customer)->limit(10);$command = $db->crea...
Yii2: AR$customer = Customer::find(2)   – Finder / Model       ->active()               – Можно сделать свой       ->one()...
Yii2: AR$postFinder = Post::find()       – Criteria  ->where(array(                 – Можно мёржить finder    active => tr...
Yii2: AR– tableName(),                            class Customer extends ActiveRecord {                                   ...
Yii2: AR$customers =                 $customers =Customer::find()->           Customer::find()->active()asArray()->all(); ...
TODO (если успеем)•   HTTP (CURL) wrapper    • Виджеты на базе•   Package manager          jQueryUI•   Mailer             ...
1 или 2?Ждите, но работайте на стабильном.
Когда?До альфы на github (в    •   Базу для i18nкоторой будет не всё     •   Controller + webappзапланированное)         •...
Что почитать про Yii1?—Официальный гайд—Learning Yii, Larry Ulman—Туториал по созданию блога—Yii 1.1 Application Developme...
Что почитать про Yii2?—http://www.yiiframework.co m/forum/index.php/forum/4 2-design-discussions-for-yii- 20/
Вопросы?yiiframework.com yiiframework.ru   rmcreative.ru
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2
Upcoming SlideShare
Loading in...5
×

DevConf 2012 - Yii, его разработка и Yii2

17,736

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
17,736
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
29
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "DevConf 2012 - Yii, его разработка и Yii2"

  1. 1. Yii, его разработка и Yii2 Александр Макаров, Yii core team
  2. 2. Что такое Yii?PHP5 MVC. Мощный кэш.Красивый API. RBAC, авторизация.DAO, AR, миграции. Консоль.Работа с формами. error handler, log.Темы. Gii.Тест-фреймворк. I18n на основе CLDR.Документация. Виджеты.Сообщество. Лицензия BSD.
  3. 3. *интранет
  4. 4. 2 2
  5. 5. Почему?
  6. 6. 1.Баланс2.Стабильность3.Гибкость4.Документация
  7. 7. Балансировать непросто• «Правильная» архитектура или практический опыт?• 20% или 80%• Фичи или ядро?
  8. 8. Стабильность = и зло и добро
  9. 9. Гибкость не в ущерб API• Меньше абстракции• Не усложнять• Интуитивные умолчания• Скрыть сложность
  10. 10. Как мы документируем—Пишем код — обновляем документацию.—phpdoc.—Примеры.—Применимо для любого проекта.
  11. 11. События 2011 — начала 2012
  12. 12. Что же произошло?• 5 стабильных версий • Окончательно вылезли Yii 1.1 из «подполья»:• Yii 1.1 Application – Yii beer party Development Cookbook – YiiTalk• Yii for Eclipse PDT, – YiiConf CodeLobster• Yii → GitHub
  13. 13. Уроки• Не обещать золотых • Мероприятия очень гор, реализовывать важны обещанное • Книги писать• Сообщество не любит финансово невыгодно, ждать… но может но интересно и• Получить первых полезно крупных пользователей сложнее всего
  14. 14. За два первые дня—348 watches—61 forks
  15. 15. Сейчас—1337 watches—273 forks
  16. 16. GitHub рулит, но…• А как же качество реквестов?• Правильный процесс.• Работа с сообществом.• Немного юмора.• Позитивный настрой.
  17. 17. Команда—3 активных core-разработчика: qiang, samdark, mdomba.—github.
  18. 18. Что плохо в Yii 1.1?• AR (finder и record не разделены, API).• Некоторые классы в странных местах.• Но это всё мелочи… Самое страшное — BC
  19. 19. * * * * 2004 2005 2006 2007 2008 2011 Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010
  20. 20. Yii 2?
  21. 21. —PHP 5.3.8+ —Улучшаем структуру—Все классы в —Убиваем лишние namespace (yii) и без сущности префикса —Сохраняем плюсы—PSR-0 v2
  22. 22. Документация—Larry Ullman, автор 22-х отличных IT-книг и серии статей про Yii: книга + участие в официальной документации.—API не хуже 1.1.—Code style.—Генератор документации.
  23. 23. Yii2: base— Алиасы вида class MyComponent extends @yii/base/Component yiibaseObject {— CComponent → public $x; Object + Component public function __construct($a, $b)— SPL вместо { большинства //… коллекций } }— Убит CFormModel в пользу Model $component = MyComponent::newInstance( array(x=>10), a, b );
  24. 24. Yii2: View Object — render(), widget(), beginCache() → viewObject — В View: $owner = тот, кто запустил метод — $this = View. — Не нужны renderer. — Можно использовать в консоли. — CHtml никуда не делся.
  25. 25. Yii2: events$post->on(add, • Не нужна декларацияfunction($event) { ... • Синтаксис похож на}); jQuery • Behavior-ы заменят$post->trigger(add, фильтрыnew Event($this));$post->off(add,$callback);$handlers = $post->getEventHandlers(add);
  26. 26. Yii2: Query object// Query object$query = new Query;$query->select(id)->from(tbl_customer)->limit(10);$command = $db->createCommand($query);$this->assertEquals("SELECT `id` FROM `tbl_customer`LIMIT 10", $command->sql);// array$command = $db->createCommand(array( select => name, from => tbl_customer,));
  27. 27. Yii2: AR$customer = Customer::find(2) – Finder / Model ->active() – Можно сделать свой ->one(); finder$customer->name = Qiang; – ::model()$customer->save(); – Автокавычки.$customers = Customer::find() – Method chains. ->order(id) – Dirty attributes. ->asArray(true) ->all();
  28. 28. Yii2: AR$postFinder = Post::find() – Criteria ->where(array( – Можно мёржить finder active => true – Можно дополнять)); условия на ходуif($isPrivate) { $postFinder->addWhere(array( createdBy => $userId, ));}$posts = $postFinder ->mergeWith($anotherFinder) ->all();
  29. 29. Yii2: AR– tableName(), class Customer extends ActiveRecord { const STATUS_ACTIVE = 1; relations(), scopes() = public static function tableName() { static. return tbl_customer;– Связи HAS_ONE, } HAS_MANY. public static function relations() { return array(– link = FKs orders:Order[] => array(– via = through link => array(customer_id => id),– Анонимки для ), ); scopes. }– Токены "@." и "?. public static function scopes() { return array( Автоалиас. Своя active => function($q) { таблица. Внешняя return $q- >andWhere(@.`status` = . self::STATUS_ACTIVE); таблица. }, ); } }
  30. 30. Yii2: AR$customers = $customers =Customer::find()-> Customer::find()->active()asArray()->all(); ->all();foreach (Customer::find() $customers =as $customer) Customer::find() ->where(name like :name,$count = Customer::count() array(->value(); :name => %customer%‘ ))->order(id)->all();
  31. 31. TODO (если успеем)• HTTP (CURL) wrapper • Виджеты на базе• Package manager jQueryUI• Mailer • Коммерческая• Twitter Bootstrap поддержка (сам Yii всегда будет открыт и• Debug toolbar бесплатен)• Console requirements• More helpers
  32. 32. 1 или 2?Ждите, но работайте на стабильном.
  33. 33. Когда?До альфы на github (в • Базу для i18nкоторой будет не всё • Controller + webappзапланированное) • Базу для виджетовнужно доделать, какминимум, вот эти штуки • URL manager→
  34. 34. Что почитать про Yii1?—Официальный гайд—Learning Yii, Larry Ulman—Туториал по созданию блога—Yii 1.1 Application Development Cookbook—Блоги—Хабр
  35. 35. Что почитать про Yii2?—http://www.yiiframework.co m/forum/index.php/forum/4 2-design-discussions-for-yii- 20/
  36. 36. Вопросы?yiiframework.com yiiframework.ru rmcreative.ru
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×