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

  • 17,367 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
17,367
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
28
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Yii, его разработка и Yii2 Александр Макаров, Yii core team
  • 2. Что такое Yii?PHP5 MVC. Мощный кэш.Красивый API. RBAC, авторизация.DAO, AR, миграции. Консоль.Работа с формами. error handler, log.Темы. Gii.Тест-фреймворк. I18n на основе CLDR.Документация. Виджеты.Сообщество. Лицензия BSD.
  • 3. *интранет
  • 4. 2 2
  • 5. Почему?
  • 6. 1.Баланс2.Стабильность3.Гибкость4.Документация
  • 7. Балансировать непросто• «Правильная» архитектура или практический опыт?• 20% или 80%• Фичи или ядро?
  • 8. Стабильность = и зло и добро
  • 9. Гибкость не в ущерб API• Меньше абстракции• Не усложнять• Интуитивные умолчания• Скрыть сложность
  • 10. Как мы документируем—Пишем код — обновляем документацию.—phpdoc.—Примеры.—Применимо для любого проекта.
  • 11. События 2011 — начала 2012
  • 12. Что же произошло?• 5 стабильных версий • Окончательно вылезли Yii 1.1 из «подполья»:• Yii 1.1 Application – Yii beer party Development Cookbook – YiiTalk• Yii for Eclipse PDT, – YiiConf CodeLobster• Yii → GitHub
  • 13. Уроки• Не обещать золотых • Мероприятия очень гор, реализовывать важны обещанное • Книги писать• Сообщество не любит финансово невыгодно, ждать… но может но интересно и• Получить первых полезно крупных пользователей сложнее всего
  • 14. За два первые дня—348 watches—61 forks
  • 15. Сейчас—1337 watches—273 forks
  • 16. GitHub рулит, но…• А как же качество реквестов?• Правильный процесс.• Работа с сообществом.• Немного юмора.• Позитивный настрой.
  • 17. Команда—3 активных core-разработчика: qiang, samdark, mdomba.—github.
  • 18. Что плохо в Yii 1.1?• AR (finder и record не разделены, API).• Некоторые классы в странных местах.• Но это всё мелочи… Самое страшное — BC
  • 19. * * * * 2004 2005 2006 2007 2008 2011 Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010
  • 20. Yii 2?
  • 21. —PHP 5.3.8+ —Улучшаем структуру—Все классы в —Убиваем лишние namespace (yii) и без сущности префикса —Сохраняем плюсы—PSR-0 v2
  • 22. Документация—Larry Ullman, автор 22-х отличных IT-книг и серии статей про Yii: книга + участие в официальной документации.—API не хуже 1.1.—Code style.—Генератор документации.
  • 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. Yii2: View Object — render(), widget(), beginCache() → viewObject — В View: $owner = тот, кто запустил метод — $this = View. — Не нужны renderer. — Можно использовать в консоли. — CHtml никуда не делся.
  • 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. 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. 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. Yii2: AR$postFinder = Post::find() – Criteria ->where(array( – Можно мёржить finder active => true – Можно дополнять)); условия на ходуif($isPrivate) { $postFinder->addWhere(array( createdBy => $userId, ));}$posts = $postFinder ->mergeWith($anotherFinder) ->all();
  • 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. 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. TODO (если успеем)• HTTP (CURL) wrapper • Виджеты на базе• Package manager jQueryUI• Mailer • Коммерческая• Twitter Bootstrap поддержка (сам Yii всегда будет открыт и• Debug toolbar бесплатен)• Console requirements• More helpers
  • 32. 1 или 2?Ждите, но работайте на стабильном.
  • 33. Когда?До альфы на github (в • Базу для i18nкоторой будет не всё • Controller + webappзапланированное) • Базу для виджетовнужно доделать, какминимум, вот эти штуки • URL manager→
  • 34. Что почитать про Yii1?—Официальный гайд—Learning Yii, Larry Ulman—Туториал по созданию блога—Yii 1.1 Application Development Cookbook—Блоги—Хабр
  • 35. Что почитать про Yii2?—http://www.yiiframework.co m/forum/index.php/forum/4 2-design-discussions-for-yii- 20/
  • 36. Вопросы?yiiframework.com yiiframework.ru rmcreative.ru