Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Yii2   Что нового?             Александр Макаров,                    Yii core team
Немного статистики
Кто использует Yii?
*интранет
2   2
Почему?
1.Баланс2.Стабильность3.Гибкость4.Документация
События 2011 — начала 2012
Что же произошло?• 5 стабильных версий    • Окончательно вылезли  Yii 1.1                  из «подполья»:• Yii 1.1 Applica...
За два первые дня—348 watches—61 forks
Сейчас—1134 watches—240 forks
Yii 1.1.11 будет интересным ;)
Что плохо в Yii 1.1?• AR (finder и record не разделены, API).• Некоторые классы в странных местах.• Куча мелочей.     Само...
*              *                 *       *                                          2004       2005   2006   2007       2...
Команда Yii 2—3 активных core-разработчика: qiang, samdark, mdomba.—github.
—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минимум, вот эти штуки   •   Con...
Что почитать?—http://www.yiiframework.co m/forum/index.php/forum/4 2-design-discussions-for-yii- 20/
Вопросы?yiiframework.com yiiframework.ru   rmcreative.ru
YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что нового
Upcoming SlideShare
Loading in …5
×

YiiConf 2012 - Alexander Makarov - Yii2, что нового

19,884 views

Published on

Published in: Technology
  • Be the first to comment

YiiConf 2012 - Alexander Makarov - Yii2, что нового

  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

×