SlideShare ist ein Scribd-Unternehmen logo
1 von 40
INTRO Vitaly Korotun Associate Director, Professional Services, Kiev vitaly@magento.com Тема: Применение Компонентно-Ориентированой Архитектуры для написания  расширений
КРАТКИЙ ОБЗОР Компонентно-Ориентированной Архитектуры
Базовая модель компонентного фреймворка
Преимущества Компонентно-Ориентированной Архитектуры Независимость расширений Компоненты являются неделимыми единицами системы, компонентная модель предписывает, как именно они должны взаимодействовать, фреймворк регламентирует их архитектуру и предоставляет весь обслуживающий вспомогательный функционал.  Улучшение предсказуемости системы Компонентная модель регламентирует правила проектирования, которые насильственного навязываются всем компонентам. Это означает, что единообразие различных глобальных свойств способствуют увеличению таких качественных показателей, как масштабируемость, безопасность, конфигурируемость и т.д.
Компонент
Компонентная модель Компонентная модель предписывает то, как компоненты взаимодействуют друг с другом
Задачи, которые решает компонентая модель Однородность композиции
Задачи, которые решает компонентая модель Однородность композиции
Задачи, которые решает компонентая модель Однородность композиции
Компонентный фреймворк Мини-операционные системы
Задачи, которые решает компонентный фреймворк СОГЛАСОВАНИЕ и обслуживание РАБОТЫ СИСТЕМЫ
Задачи, которые решает компонентный фреймворк СОГЛАСОВАНИЕ и обслуживание РАБОТЫ СИСТЕМЫ
Задачи, которые решает компонентный фреймворк СОГЛАСОВАНИЕ и обслуживание РАБОТЫ СИСТЕМЫ
Интерфейсы Интерфейсы обеспечивают механизм для контроля зависимостей, которые возникают между модулями системы
Контракты Контракт компонента указывает шаблон (модель) взаимодействия по отношению к этому компоненту
Способы Ожидания светлого будущего Первый способ Второй способ Витаем в облаках Действуем
Компонент-ориентированная разработка Magento Extension
Краткий Обзор архитектуры Magento
Определение архитектуры Различные алгоритмы дают различные значения производительности, различный уровень сложности и приводят к различным уровням головная боли
Определение архитектуры Посылать уведомления удаленному сервису,  всякий раз при сохранении продукта ?
Антипаттерны Spy Games
Антипаттерны Концепция ,[object Object]
 Когда все пользовательские модули делают то, что они должны непосредственно внутри блоков или даже внутри шаблонов.
 Конечно, отсутствие документации.Spy Games
Spy Games Антипаттерны Дисфункция ,[object Object]
 Трудно предсказать сценарий на каждой странице.,[object Object]
 Если вы собираетесь изменить поведение во время какого-то пользовательского действия, лучше всего внедрить логику в контроллере.
 Если вы собираетесь изменять данные, используйте перекрытия моделей или их вспомогательных спутников.Spy Games
Антипаттерны Buddy Guy
Антипаттерны Концепция ,[object Object],Buddy Guy
Антипаттерны Дисфункция ,[object Object]
 Часто приводит к проблемам с производительностью.Buddy Guy
Antipatterns  by  M.P.S.T.  Buddy Guy likes The Anarchy
Антипаттерны Рефакторинг ,[object Object],Buddy Guy
Компонент-ориентированная разработка Magento Extension Перегрузка классов $product = Mage::getModel('catalog/product'); <config>     /****/     <global>         <models>             <catalog>                 <!-- catalog models class group declaration-->                 <class>Mage_Catalog_Model</class>                 <!-- catalog resource models class group declaration-->                 <resourceModel>catalog_resource_eav_mysql4</resourceModel>             </catalog>         </models>     </global>     /****/ </config>
Компонент-ориентированная разработка Magento Extension Декларация новой группы  классов class My_Module_Factory {     public static function getPlugin($pluginClass = '', $arguments = array())     {         $pluginClass = trim($pluginClass);         if (strpos($pluginClass , '/')===false) {             $className = $modelClass;         }         $className = Mage::getConfig()->getGroupedClassName('plugin', $pluginClass);           if (class_exists($className)) {              return new $className($arguments);         } else {             #throw Mage::exception('My_Module', ‘***’);             return false;         }     } } $plugin = My_Module_Factory ::getPlugin(‘my_module/some_class');
Компонент-ориентированная разработка Magento Extension Перехват/Переадресация вызовов    <frontend>         <routers>             <checkout>                 <args>                     <modules>                         <custom_checkout before="Mage_Checkout">Custom_Checkout</custom_checkout>                     </modules>                 </args>             </checkout>         </routers>         <layout>             <updates>                 <custom_checkout module="Custom_Checkout">                     <file>custom/checkout.xml</file>                 </custom_checkout>             </updates>         </layout>     </frontend> app/code/local/Custom/Checkout/ ./controllers/OnepageController.php http://your-domain.com/checkout/onepage/billing http://your-domain.com/checkout/onepage/shipping http://your-domain.com/checkout/onepage/customstep
Компонент-ориентированная разработка Magento Extension Интернационализация  (i18n) echo Mage::helper('catalog')->__('Text Message'); <frontend> ...     <translate>         <modules>             <Mage_Catalog>                 <files>                     <default>Mage_Catalog.csv</default>                 </files>             </Mage_Catalog>         </modules>     </translate> ... </frontend> design/[AREA]/[PACKAGE]/[THEME]/locale/[LOCALE_CODE] ./translate.csv
Компонент-ориентированная разработка Magento Extension Layout XML <layout>     <default translate="label" module="page">         <block type="page/html" name="root" output="toHtml" template="page/3columns.phtml">             <block type="page/html_head" name="head" as="head">         ...             </block>             <block type="core/text_list" name="content" as="content" translate="label">         ...             </block>             <block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">             ...             </block>         </block>     </default>     ... </layout> <layout>     ...    <PRODUCT_TYPE_simple translate="label" module="catalog">         <label>Catalog Product View (Simple)</label>         <reference name="product.info">             <block type="catalog/product_view_type_simple" name="product.info.simple" as="product_type_data" template="catalog/product/view/type/default.phtml">                 <block type="core/text_list" name="product.info.simple.extra" as="product_type_data_extra" translate="label">                     <label>Product Extra Info</label>                 </block>             </block>         </reference>     </PRODUCT_TYPE_simple>     ... </layout> <layout>     ...     <catalog_product_view translate="label">         <reference name="root">             <action method="setTemplate"><template>page/2columns-right.phtml</template></action>         </reference>         <reference name="head">             <action method="addJs"><script>varien/product.js</script></action>         </reference>         <reference name="content">             <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">         </reference>     </catalog_product_view>     ... </layout>

Weitere ähnliche Inhalte

Andere mochten auch

Индексирование в Magento
Индексирование в MagentoИндексирование в Magento
Индексирование в MagentoMagecom Ukraine
 
Мобильные клиенты интернет-магазинов
Мобильные клиенты интернет-магазиновМобильные клиенты интернет-магазинов
Мобильные клиенты интернет-магазиновMagecom Ukraine
 
Эволюция ZF: архитектура, шаблоны, рефакторинг
Эволюция ZF: архитектура, шаблоны, рефакторингЭволюция ZF: архитектура, шаблоны, рефакторинг
Эволюция ZF: архитектура, шаблоны, рефакторингzfconfua
 
Doctrine 2
Doctrine 2Doctrine 2
Doctrine 2zfconfua
 
NoSQL и Zend Framework (Никита Грошин)
NoSQL и Zend Framework (Никита Грошин)NoSQL и Zend Framework (Никита Грошин)
NoSQL и Zend Framework (Никита Грошин)zfconfua
 
Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0zfconfua
 
Применение Scrum и Kanban для разработки web-приложений
Применение Scrum и Kanban для разработки web-приложенийПрименение Scrum и Kanban для разработки web-приложений
Применение Scrum и Kanban для разработки web-приложенийKirill Klimov
 
Реализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в MagentoРеализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в MagentoMagecom Ukraine
 
Встречайте Zend Framework 2.0
Встречайте Zend Framework 2.0Встречайте Zend Framework 2.0
Встречайте Zend Framework 2.0zfconfua
 
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...zfconfua
 
Управление продуктом в стиле Magento Unified Process
Управление продуктом в стиле Magento Unified ProcessУправление продуктом в стиле Magento Unified Process
Управление продуктом в стиле Magento Unified ProcessMagecom Ukraine
 
Ключ успеха – процесс или продукт?
Ключ успеха – процесс или продукт?Ключ успеха – процесс или продукт?
Ключ успеха – процесс или продукт?Magecom Ukraine
 
Применение TDD при разработке веб-сервисов
Применение TDD при разработке веб-сервисовПрименение TDD при разработке веб-сервисов
Применение TDD при разработке веб-сервисовMagecom Ukraine
 
NoSQL и Zend Framework (Ростислав Михайлив)
NoSQL и Zend Framework (Ростислав Михайлив)NoSQL и Zend Framework (Ростислав Михайлив)
NoSQL и Zend Framework (Ростислав Михайлив)zfconfua
 

Andere mochten auch (14)

Индексирование в Magento
Индексирование в MagentoИндексирование в Magento
Индексирование в Magento
 
Мобильные клиенты интернет-магазинов
Мобильные клиенты интернет-магазиновМобильные клиенты интернет-магазинов
Мобильные клиенты интернет-магазинов
 
Эволюция ZF: архитектура, шаблоны, рефакторинг
Эволюция ZF: архитектура, шаблоны, рефакторингЭволюция ZF: архитектура, шаблоны, рефакторинг
Эволюция ZF: архитектура, шаблоны, рефакторинг
 
Doctrine 2
Doctrine 2Doctrine 2
Doctrine 2
 
NoSQL и Zend Framework (Никита Грошин)
NoSQL и Zend Framework (Никита Грошин)NoSQL и Zend Framework (Никита Грошин)
NoSQL и Zend Framework (Никита Грошин)
 
Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0
 
Применение Scrum и Kanban для разработки web-приложений
Применение Scrum и Kanban для разработки web-приложенийПрименение Scrum и Kanban для разработки web-приложений
Применение Scrum и Kanban для разработки web-приложений
 
Реализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в MagentoРеализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в Magento
 
Встречайте Zend Framework 2.0
Встречайте Zend Framework 2.0Встречайте Zend Framework 2.0
Встречайте Zend Framework 2.0
 
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
 
Управление продуктом в стиле Magento Unified Process
Управление продуктом в стиле Magento Unified ProcessУправление продуктом в стиле Magento Unified Process
Управление продуктом в стиле Magento Unified Process
 
Ключ успеха – процесс или продукт?
Ключ успеха – процесс или продукт?Ключ успеха – процесс или продукт?
Ключ успеха – процесс или продукт?
 
Применение TDD при разработке веб-сервисов
Применение TDD при разработке веб-сервисовПрименение TDD при разработке веб-сервисов
Применение TDD при разработке веб-сервисов
 
NoSQL и Zend Framework (Ростислав Михайлив)
NoSQL и Zend Framework (Ростислав Михайлив)NoSQL и Zend Framework (Ростислав Михайлив)
NoSQL и Zend Framework (Ростислав Михайлив)
 

Ähnlich wie Применение компонент-ориентированной архитектуры для написания Magento Extensions

метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 
Шаблоны проектирования в Magento
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в MagentoPavel Usachev
 
Эффективное использование Microsoft team system для улучшения процессов разра...
Эффективное использование Microsoft team system для улучшения процессов разра...Эффективное использование Microsoft team system для улучшения процессов разра...
Эффективное использование Microsoft team system для улучшения процессов разра...Александр Шамрай
 
Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Dima Dzuba
 
Презентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияПрезентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияRauan Ibraikhan
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияRauan Ibraikhan
 
Trpo 7 повторное использ_компонентов
Trpo 7 повторное использ_компонентовTrpo 7 повторное использ_компонентов
Trpo 7 повторное использ_компонентовpogromskaya
 
Система генерации чек-листов для регрессионного тестирования на основе анализ...
Система генерации чек-листов для регрессионного тестирования на основе анализ...Система генерации чек-листов для регрессионного тестирования на основе анализ...
Система генерации чек-листов для регрессионного тестирования на основе анализ...SQALab
 
Unified modeling language basic-part 1
Unified modeling language basic-part 1Unified modeling language basic-part 1
Unified modeling language basic-part 1ISsoft
 
Azure DevOps Управление проектом и версионный контроль
Azure DevOps Управление проектом и версионный контрольAzure DevOps Управление проектом и версионный контроль
Azure DevOps Управление проектом и версионный контрольАлександр Шамрай
 
Trpo 6 архит_проектирование
Trpo 6 архит_проектированиеTrpo 6 архит_проектирование
Trpo 6 архит_проектированиеpogromskaya
 
Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?Egor Stremousov
 
Больше чем анализ
Больше чем анализБольше чем анализ
Больше чем анализSQALab
 
презентация релиз 5
презентация релиз 5презентация релиз 5
презентация релиз 5eugenij eugenij
 
Интерактивные Прототипы или «Игра в Имитацию»
Интерактивные Прототипы  или «Игра в Имитацию»Интерактивные Прототипы  или «Игра в Имитацию»
Интерактивные Прототипы или «Игра в Имитацию»Artem Tolstykh
 

Ähnlich wie Применение компонент-ориентированной архитектуры для написания Magento Extensions (20)

Unit Testing
Unit TestingUnit Testing
Unit Testing
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 
Шаблоны проектирования в Magento
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в Magento
 
Эффективное использование Microsoft team system для улучшения процессов разра...
Эффективное использование Microsoft team system для улучшения процессов разра...Эффективное использование Microsoft team system для улучшения процессов разра...
Эффективное использование Microsoft team system для улучшения процессов разра...
 
Training Labs (www.cmcons.com)
Training Labs (www.cmcons.com)Training Labs (www.cmcons.com)
Training Labs (www.cmcons.com)
 
Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4
 
Презентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияПрезентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспечения
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспечения
 
Компоненты 2.0
Компоненты 2.0 Компоненты 2.0
Компоненты 2.0
 
DESIGN PATTERNS? EASY!
DESIGN PATTERNS? EASY!DESIGN PATTERNS? EASY!
DESIGN PATTERNS? EASY!
 
5 Тема
5 Тема5 Тема
5 Тема
 
Trpo 7 повторное использ_компонентов
Trpo 7 повторное использ_компонентовTrpo 7 повторное использ_компонентов
Trpo 7 повторное использ_компонентов
 
Система генерации чек-листов для регрессионного тестирования на основе анализ...
Система генерации чек-листов для регрессионного тестирования на основе анализ...Система генерации чек-листов для регрессионного тестирования на основе анализ...
Система генерации чек-листов для регрессионного тестирования на основе анализ...
 
Unified modeling language basic-part 1
Unified modeling language basic-part 1Unified modeling language basic-part 1
Unified modeling language basic-part 1
 
Azure DevOps Управление проектом и версионный контроль
Azure DevOps Управление проектом и версионный контрольAzure DevOps Управление проектом и версионный контроль
Azure DevOps Управление проектом и версионный контроль
 
Trpo 6 архит_проектирование
Trpo 6 архит_проектированиеTrpo 6 архит_проектирование
Trpo 6 архит_проектирование
 
Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?
 
Больше чем анализ
Больше чем анализБольше чем анализ
Больше чем анализ
 
презентация релиз 5
презентация релиз 5презентация релиз 5
презентация релиз 5
 
Интерактивные Прототипы или «Игра в Имитацию»
Интерактивные Прототипы  или «Игра в Имитацию»Интерактивные Прототипы  или «Игра в Имитацию»
Интерактивные Прототипы или «Игра в Имитацию»
 

Mehr von Magecom Ukraine

10 000 вёдер или в погоне за Ключом от всех дверей
10 000 вёдер или в погоне за Ключом от всех дверей10 000 вёдер или в погоне за Ключом от всех дверей
10 000 вёдер или в погоне за Ключом от всех дверейMagecom Ukraine
 
Flexibility vs Conformity - lessons learned in Open Source
Flexibility vs Conformity - lessons learned in Open SourceFlexibility vs Conformity - lessons learned in Open Source
Flexibility vs Conformity - lessons learned in Open SourceMagecom Ukraine
 
Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Magecom Ukraine
 
Деплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложенийДеплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложенийMagecom Ukraine
 
Расширение функциональности модульного MVC приложения
Расширение функциональности модульного MVC приложенияРасширение функциональности модульного MVC приложения
Расширение функциональности модульного MVC приложенияMagecom Ukraine
 
Тестирование Magento с использованием Selenium
Тестирование Magento с использованием SeleniumТестирование Magento с использованием Selenium
Тестирование Magento с использованием SeleniumMagecom Ukraine
 
Архитектура веб-приложений на примере Zend Framework и Magento
Архитектура веб-приложений  на примере Zend Framework и MagentoАрхитектура веб-приложений  на примере Zend Framework и Magento
Архитектура веб-приложений на примере Zend Framework и MagentoMagecom Ukraine
 
Extension Marketplace. Площадки для распространения ПО
Extension Marketplace. Площадки для распространения ПОExtension Marketplace. Площадки для распространения ПО
Extension Marketplace. Площадки для распространения ПОMagecom Ukraine
 
Стандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхMagecom Ukraine
 

Mehr von Magecom Ukraine (9)

10 000 вёдер или в погоне за Ключом от всех дверей
10 000 вёдер или в погоне за Ключом от всех дверей10 000 вёдер или в погоне за Ключом от всех дверей
10 000 вёдер или в погоне за Ключом от всех дверей
 
Flexibility vs Conformity - lessons learned in Open Source
Flexibility vs Conformity - lessons learned in Open SourceFlexibility vs Conformity - lessons learned in Open Source
Flexibility vs Conformity - lessons learned in Open Source
 
Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP
 
Деплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложенийДеплоймент и распространение обновлений для веб-приложений
Деплоймент и распространение обновлений для веб-приложений
 
Расширение функциональности модульного MVC приложения
Расширение функциональности модульного MVC приложенияРасширение функциональности модульного MVC приложения
Расширение функциональности модульного MVC приложения
 
Тестирование Magento с использованием Selenium
Тестирование Magento с использованием SeleniumТестирование Magento с использованием Selenium
Тестирование Magento с использованием Selenium
 
Архитектура веб-приложений на примере Zend Framework и Magento
Архитектура веб-приложений  на примере Zend Framework и MagentoАрхитектура веб-приложений  на примере Zend Framework и Magento
Архитектура веб-приложений на примере Zend Framework и Magento
 
Extension Marketplace. Площадки для распространения ПО
Extension Marketplace. Площадки для распространения ПОExtension Marketplace. Площадки для распространения ПО
Extension Marketplace. Площадки для распространения ПО
 
Стандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложениях
 

Применение компонент-ориентированной архитектуры для написания Magento Extensions

  • 1.
  • 2. INTRO Vitaly Korotun Associate Director, Professional Services, Kiev vitaly@magento.com Тема: Применение Компонентно-Ориентированой Архитектуры для написания расширений
  • 5. Преимущества Компонентно-Ориентированной Архитектуры Независимость расширений Компоненты являются неделимыми единицами системы, компонентная модель предписывает, как именно они должны взаимодействовать, фреймворк регламентирует их архитектуру и предоставляет весь обслуживающий вспомогательный функционал. Улучшение предсказуемости системы Компонентная модель регламентирует правила проектирования, которые насильственного навязываются всем компонентам. Это означает, что единообразие различных глобальных свойств способствуют увеличению таких качественных показателей, как масштабируемость, безопасность, конфигурируемость и т.д.
  • 7. Компонентная модель Компонентная модель предписывает то, как компоненты взаимодействуют друг с другом
  • 8. Задачи, которые решает компонентая модель Однородность композиции
  • 9. Задачи, которые решает компонентая модель Однородность композиции
  • 10. Задачи, которые решает компонентая модель Однородность композиции
  • 12. Задачи, которые решает компонентный фреймворк СОГЛАСОВАНИЕ и обслуживание РАБОТЫ СИСТЕМЫ
  • 13. Задачи, которые решает компонентный фреймворк СОГЛАСОВАНИЕ и обслуживание РАБОТЫ СИСТЕМЫ
  • 14. Задачи, которые решает компонентный фреймворк СОГЛАСОВАНИЕ и обслуживание РАБОТЫ СИСТЕМЫ
  • 15. Интерфейсы Интерфейсы обеспечивают механизм для контроля зависимостей, которые возникают между модулями системы
  • 16. Контракты Контракт компонента указывает шаблон (модель) взаимодействия по отношению к этому компоненту
  • 17. Способы Ожидания светлого будущего Первый способ Второй способ Витаем в облаках Действуем
  • 20. Определение архитектуры Различные алгоритмы дают различные значения производительности, различный уровень сложности и приводят к различным уровням головная боли
  • 21. Определение архитектуры Посылать уведомления удаленному сервису, всякий раз при сохранении продукта ?
  • 23.
  • 24. Когда все пользовательские модули делают то, что они должны непосредственно внутри блоков или даже внутри шаблонов.
  • 25. Конечно, отсутствие документации.Spy Games
  • 26.
  • 27.
  • 28. Если вы собираетесь изменить поведение во время какого-то пользовательского действия, лучше всего внедрить логику в контроллере.
  • 29. Если вы собираетесь изменять данные, используйте перекрытия моделей или их вспомогательных спутников.Spy Games
  • 31.
  • 32.
  • 33. Часто приводит к проблемам с производительностью.Buddy Guy
  • 34. Antipatterns by M.P.S.T. Buddy Guy likes The Anarchy
  • 35.
  • 36. Компонент-ориентированная разработка Magento Extension Перегрузка классов $product = Mage::getModel('catalog/product'); <config>     /****/     <global>         <models>             <catalog>                 <!-- catalog models class group declaration-->                 <class>Mage_Catalog_Model</class>                 <!-- catalog resource models class group declaration-->                 <resourceModel>catalog_resource_eav_mysql4</resourceModel>             </catalog>         </models>     </global>     /****/ </config>
  • 37. Компонент-ориентированная разработка Magento Extension Декларация новой группы классов class My_Module_Factory {     public static function getPlugin($pluginClass = '', $arguments = array())     {         $pluginClass = trim($pluginClass);         if (strpos($pluginClass , '/')===false) {             $className = $modelClass;         }         $className = Mage::getConfig()->getGroupedClassName('plugin', $pluginClass);           if (class_exists($className)) {              return new $className($arguments);         } else {             #throw Mage::exception('My_Module', ‘***’);             return false;         }     } } $plugin = My_Module_Factory ::getPlugin(‘my_module/some_class');
  • 38. Компонент-ориентированная разработка Magento Extension Перехват/Переадресация вызовов <frontend>         <routers>             <checkout>                 <args>                     <modules>                         <custom_checkout before="Mage_Checkout">Custom_Checkout</custom_checkout>                     </modules>                 </args>             </checkout>         </routers>         <layout>             <updates>                 <custom_checkout module="Custom_Checkout">                     <file>custom/checkout.xml</file>                 </custom_checkout>             </updates>         </layout>     </frontend> app/code/local/Custom/Checkout/ ./controllers/OnepageController.php http://your-domain.com/checkout/onepage/billing http://your-domain.com/checkout/onepage/shipping http://your-domain.com/checkout/onepage/customstep
  • 39. Компонент-ориентированная разработка Magento Extension Интернационализация (i18n) echo Mage::helper('catalog')->__('Text Message'); <frontend> ...     <translate>         <modules>             <Mage_Catalog>                 <files>                     <default>Mage_Catalog.csv</default>                 </files>             </Mage_Catalog>         </modules>     </translate> ... </frontend> design/[AREA]/[PACKAGE]/[THEME]/locale/[LOCALE_CODE] ./translate.csv
  • 40. Компонент-ориентированная разработка Magento Extension Layout XML <layout>     <default translate="label" module="page">         <block type="page/html" name="root" output="toHtml" template="page/3columns.phtml">             <block type="page/html_head" name="head" as="head">         ...             </block>             <block type="core/text_list" name="content" as="content" translate="label">         ...             </block>             <block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">             ...             </block>         </block>     </default>     ... </layout> <layout>     ...    <PRODUCT_TYPE_simple translate="label" module="catalog">         <label>Catalog Product View (Simple)</label>         <reference name="product.info">             <block type="catalog/product_view_type_simple" name="product.info.simple" as="product_type_data" template="catalog/product/view/type/default.phtml">                 <block type="core/text_list" name="product.info.simple.extra" as="product_type_data_extra" translate="label">                     <label>Product Extra Info</label>                 </block>             </block>         </reference>     </PRODUCT_TYPE_simple> ... </layout> <layout>     ...     <catalog_product_view translate="label">         <reference name="root">             <action method="setTemplate"><template>page/2columns-right.phtml</template></action>         </reference>         <reference name="head">             <action method="addJs"><script>varien/product.js</script></action>         </reference>         <reference name="content">             <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">         </reference>     </catalog_product_view>     ... </layout>
  • 42.
  • 43. OUTRO
  • 44. OUTRO