Successfully reported this slideshow.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

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

×