Эволюция ZF: архитектура, шаблоны, рефакторинг

6,245 views

Published on

Виктор Фараздаги
Component Maintainer и Contributor ZF 2.0, 4C

Published in: Technology, Education
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,245
On SlideShare
0
From Embeds
0
Number of Embeds
4,519
Actions
Shares
0
Downloads
32
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Эволюция ZF: архитектура, шаблоны, рефакторинг

  1. 1. Эволюция ZF Виктор Фараздаги Senior Dev, 4C 4cinc.com
  2. 2. Кто?  Senior Dev at 4C  Component Maintainer и Contributor ZF2: ZendOpenId ZendServiceAmazon ZendServiceSlideshare ZendQueue  Один из разработчиков Phing  Начинающий подкастер (zftalk.dev@rpod)
  3. 3. О чем?  Архитектура ZF1 & ZF2  Принципы ОО Проектирования  Шаблоны Проектирования  В какую сторону рефакторим?
  4. 4. Для кого? Если вы:  Решили принять участие в разработке ZF2  Серьезно используете ZF1  Интересуетесь ZF1 → ZF2
  5. 5. Для чего?  Лучшее понимание кода  Лучшее понимание принципов  Методологический анализ  Просто интересно
  6. 6. Архитектура ZF (с высоты птичьего полета)
  7. 7. Вопросы? Вопросы!  Component Library vs Full-Stack Framework?  “Use At Will” Mantra  Фреймворк чрезмерно раздут?  Масштабируемый? Надежный? Расширяемый?
  8. 8. ZF1 phploc Кол-во строк (LOC): 935.006 Комментарии (CLOC): 437.052 Исполняемый код (NCLOC): 497.954 Интерфейсы: 238 Классы: 4496 Абстрактные: 386 (8.59%) Конкретные: 4110 (91.41%)
  9. 9. ZF2 phploc Кол-во строк (LOC): 443.737 Комментарии (CLOС): 209.767 Исполняемый код (NCLOC): 233.970 Пространства имен: 482 Интерфейсы: 243 Классы: 2.306 Абстрактные: 178 (7.72%) Конкретные: 2.128 (92.28%)
  10. 10. ZF 1 / ZF 2 LOCs LOC CLOC NCLOC 0 100000 200000 300000 400000 500000 600000 700000 800000 900000 1000000 ZF 1 ZF 2
  11. 11. ZF 1 / ZF 2 Классы NSs Interfaces Classes Abstract Concrete 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 ZF 1 ZF 2
  12. 12. Самый важный вывод? ~ Твое участие в разработке ZF2 только приветствуется!
  13. 13. Пакетирование в ZF2  Более продуманая инфраструктура  Решение на уровне фреймворка  Легкая установка, откат, выбор версии  PEAR и/или Pyrum  Поддержка мета-пакетов (“MVC”, “i18n” etc)
  14. 14. Словом.. ZF2 способствует продвижению принципа “использовать по желанию” + Еще более дискретная компонентная структура
  15. 15. Принципы объектно-ориентированного проектирования
  16. 16. Got problem?  Ригидность (rigidity)  Хрупкость (fragility)  Неподвижность (immobility)  Вязкость (viscosity)  Излишняя сложность (needless complexity)  Излишнее дублирование (needless repetition)  Непрозначность (opacity)
  17. 17. S.O.L.I.D. SRP Single Responsibility Principle OCP Open/Closed Principle LSP Liskov Substitution Principle ISP Interface Segregation Principle DIP Dependency Inversion Principle
  18. 18. Банда Четырех (GoF)
  19. 19. Шаблоны  Façade  Singleton  Iterator  Strategy  Observer  Template Method  Factory Method  Decorator  Adapter
  20. 20. Фасад (Façade) Разбиение подсистем на слои Развязка зависимостей Упрощение интерфейса
  21. 21. Фасад (Façade)  Сторонние библиотеки  Унаследованный код  Zend_Application Zend_Db Zend_Auth Zend_OpenId …
  22. 22. Façade After-talk  Façade vs Adapter  Façade vs Mediator  Façade + Abstract Factory  Façade + Singleton
  23. 23. Одиночка (Singleton)  Правомерноть сингулярности  Pattern vs Anti-Pattern?  Примеры: Zend_Auth Zend_Registry Zend_Controller_Front
  24. 24. Итератор (Iterator)  Полагайтесь на SPL  Traversable, Iterator, IteratorAggregate  SPL: OuterIterator, RecursiveIterator, SeekableIterator  Zend_Feed на итераторах
  25. 25. Итератор (Iterator) Интерфейсы итераторов в SPL:
  26. 26. Стратегия (Strategy)  Strategy vs Bridge  Zend_Filter, Zend_Validate
  27. 27. Стратегия (Strategy)
  28. 28. Наблюдатель (Observer)  Push model vs Pull model
  29. 29. Наблюдатель (Observer)  Интерфейс определен в SPL  SplSubject + SplObserver
  30. 30. Фабричный Метод
  31. 31. Фабричный Метод Отличительная черта: Creator создает себя. Zend_Log
  32. 32. Grokking Factory Patterns Фабрики бывают разные...  Factory Method  Abstract Factory  Simple Factory Idiom  Creational Methods  Static Factory Method
  33. 33. Шаблонный Метод  Factory Method & Template Method
  34. 34. Декоратор (Decorator) Zend_Form_Decorator_* !!! НЕ РЕАЛИЗУЮТ шаблон Декоратор !!!
  35. 35. Адаптер (Adapter)  Продолжение идеи полиморфизма  Множественное наследование  Примеры: Tool, Auth, Db, Http, Queue
  36. 36. Adapter vs Bridge
  37. 37. Планы по Рефакторингу  Больше, чем просто рефакторинг  PHP 5.3  Компонентная модель  Производительность  Контрактное программирование  DI & IoC Ready
  38. 38. Планы по Рефакторингу  Следование принципам SOLID  Чуть меньше магии  Предсказуемые APIs  Легкость сопровождения  (добавить то, что нужно ВАМ)
  39. 39. THE END

×