Successfully reported this slideshow.

Yii 2. Что нового?

3

Share

Upcoming SlideShare
Yii development
Yii development
Loading in …3
×
1 of 35
1 of 35

Yii 2. Что нового?

3

Share

Download to read offline

Расскажу о второй версии фреймворка, о том, что поменялось и почему. Отвечу на вопросы.

Расскажу о второй версии фреймворка, о том, что поменялось и почему. Отвечу на вопросы.

More Related Content

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Yii 2. Что нового?

  1. 1. Yii2 Что нового? Александр Макаров, Yii core team
  2. 2. Немного статистики
  3. 3. Кто использует Yii?
  4. 4. *интранет
  5. 5. 2 2
  6. 6. Почему?
  7. 7. 1.Баланс 2.Стабильность 3.Гибкость 4.Документация
  8. 8. События 2011 — начала 2012
  9. 9. Что же произошло? • 5 стабильных версий • Окончательно вылезли Yii 1.1 из «подполья»: • Yii 1.1 Application – Yii beer party Development Cookbook – YiiTalk • Yii for Eclipse PDT, – YiiConf CodeLobster • Yii → GitHub
  10. 10. За два первые дня —348 watches —61 forks
  11. 11. Сейчас —1134 watches —240 forks
  12. 12. Yii 1.1.11 будет интересным ;)
  13. 13. Что плохо в Yii 1.1? • AR (finder и record не разделены, API). • Некоторые классы в странных местах. • Куча мелочей. Самое страшное — BC
  14. 14. * * * *  2004 2005 2006 2007 2008 2011 Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010
  15. 15. Команда Yii 2 —3 активных core-разработчика: qiang, samdark, mdomba. —github.
  16. 16. —PHP 5.3.8+ —Улучшаем структуру —Все классы в —Убиваем лишние namespace (yii) и без сущности префикса —Сохраняем плюсы —PSR-0 v2
  17. 17. Документация —Larry Ullman, автор 22-х отличных IT-книг и серии статей про Yii: книга + участие в официальной документации. —API не хуже 1.1. —Code style. —Есть план сделать тулзу для генерации API применимой к пользовательским приложениям… или вообще убить перегенерацию.
  18. 18. 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' );
  19. 19. Yii2: View Object — render(), widget(), beginCache() → viewObject — В View: $owner = тот, кто запустил метод — $this = View. — Не нужны renderer. — Можно использовать в консоли. — CHtml никуда не делся.
  20. 20. Yii2: events $post->on('add', • Не нужна декларация function($event) { ... • Синтаксис похож на }); jQuery • Behavior-ы заменят $post->trigger('add', фильтры new Event($this)); $post->off('add', $callback); $handlers = $post- >getEventHandlers('add' );
  21. 21. 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', ));
  22. 22. Yii2: AR $customer = Customer::find(2) – Finder / Model ->active() – Можно сделать свой ->one(); finder $customer->name = 'Qiang'; – ::model() $customer->save(); – Автокавычки. $customers = Customer::find() – Method chains. ->order('id') ->asArray(true) ->all();
  23. 23. Yii2: AR $postFinder = Post::find() – Criteria ->where(array( – Можно мёржить finder 'active' => true – Можно дополнять )); условия на ходу if($isPrivate) { $postFinder->addWhere(array( 'createdBy' => $userId, )); } $posts = $postFinder ->mergeWith($anotherFinder) ->all();
  24. 24. 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); таблица. }, ); } }
  25. 25. 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();
  26. 26. TODO (если успеем) • HTTP (CURL) wrapper • Виджеты на базе • Package manager jQueryUI • Mailer • Коммерческая • Twitter Bootstrap поддержка • Debug toolbar • Console requirements • More helpers
  27. 27. 1 или 2? Ждите, но работайте на стабильном.
  28. 28. Когда? До альфы на github • Базу для кеша нужно доделать, как • Базу для i18n минимум, вот эти штуки • Controller + webapp → • Базу для виджетов • URL manager
  29. 29. Что почитать? —http://www.yiiframework.co m/forum/index.php/forum/4 2-design-discussions-for-yii- 20/
  30. 30. Вопросы? yiiframework.com yiiframework.ru rmcreative.ru

×