🗊Презентация Аспектно ориентированное программирование в PHP

Нажмите для полного просмотра!
Аспектно ориентированное программирование в PHP, слайд №1Аспектно ориентированное программирование в PHP, слайд №2Аспектно ориентированное программирование в PHP, слайд №3Аспектно ориентированное программирование в PHP, слайд №4Аспектно ориентированное программирование в PHP, слайд №5Аспектно ориентированное программирование в PHP, слайд №6Аспектно ориентированное программирование в PHP, слайд №7Аспектно ориентированное программирование в PHP, слайд №8Аспектно ориентированное программирование в PHP, слайд №9Аспектно ориентированное программирование в PHP, слайд №10Аспектно ориентированное программирование в PHP, слайд №11Аспектно ориентированное программирование в PHP, слайд №12Аспектно ориентированное программирование в PHP, слайд №13Аспектно ориентированное программирование в PHP, слайд №14Аспектно ориентированное программирование в PHP, слайд №15Аспектно ориентированное программирование в PHP, слайд №16Аспектно ориентированное программирование в PHP, слайд №17Аспектно ориентированное программирование в PHP, слайд №18Аспектно ориентированное программирование в PHP, слайд №19Аспектно ориентированное программирование в PHP, слайд №20Аспектно ориентированное программирование в PHP, слайд №21Аспектно ориентированное программирование в PHP, слайд №22Аспектно ориентированное программирование в PHP, слайд №23Аспектно ориентированное программирование в PHP, слайд №24Аспектно ориентированное программирование в PHP, слайд №25Аспектно ориентированное программирование в PHP, слайд №26Аспектно ориентированное программирование в PHP, слайд №27Аспектно ориентированное программирование в PHP, слайд №28Аспектно ориентированное программирование в PHP, слайд №29Аспектно ориентированное программирование в PHP, слайд №30Аспектно ориентированное программирование в PHP, слайд №31Аспектно ориентированное программирование в PHP, слайд №32Аспектно ориентированное программирование в PHP, слайд №33Аспектно ориентированное программирование в PHP, слайд №34Аспектно ориентированное программирование в PHP, слайд №35Аспектно ориентированное программирование в PHP, слайд №36Аспектно ориентированное программирование в PHP, слайд №37Аспектно ориентированное программирование в PHP, слайд №38Аспектно ориентированное программирование в PHP, слайд №39Аспектно ориентированное программирование в PHP, слайд №40Аспектно ориентированное программирование в PHP, слайд №41Аспектно ориентированное программирование в PHP, слайд №42Аспектно ориентированное программирование в PHP, слайд №43Аспектно ориентированное программирование в PHP, слайд №44Аспектно ориентированное программирование в PHP, слайд №45Аспектно ориентированное программирование в PHP, слайд №46Аспектно ориентированное программирование в PHP, слайд №47Аспектно ориентированное программирование в PHP, слайд №48Аспектно ориентированное программирование в PHP, слайд №49Аспектно ориентированное программирование в PHP, слайд №50Аспектно ориентированное программирование в PHP, слайд №51Аспектно ориентированное программирование в PHP, слайд №52Аспектно ориентированное программирование в PHP, слайд №53Аспектно ориентированное программирование в PHP, слайд №54

Содержание

Вы можете ознакомиться и скачать презентацию на тему Аспектно ориентированное программирование в PHP. Доклад-сообщение содержит 54 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Аспектно Ориентированное Программирование в PHP
Щеваев “pachanga” Павел (pacha.shevaev@gmail.com)‏
BIT, г.Пенза
Описание слайда:
Аспектно Ориентированное Программирование в PHP Щеваев “pachanga” Павел (pacha.shevaev@gmail.com)‏ BIT, г.Пенза

Слайд 2


Аспектно ориентированное программирование в PHP, слайд №2
Описание слайда:

Слайд 3





Как жаль, что мы не живем в идеальном мире!
Описание слайда:
Как жаль, что мы не живем в идеальном мире!

Слайд 4





+
Описание слайда:
+

Слайд 5


Аспектно ориентированное программирование в PHP, слайд №5
Описание слайда:

Слайд 6


Аспектно ориентированное программирование в PHP, слайд №6
Описание слайда:

Слайд 7





Что является помехой?
Описание слайда:
Что является помехой?

Слайд 8


Аспектно ориентированное программирование в PHP, слайд №8
Описание слайда:

Слайд 9





Лоскутное одеяло сквозного функционала
Описание слайда:
Лоскутное одеяло сквозного функционала

Слайд 10


Аспектно ориентированное программирование в PHP, слайд №10
Описание слайда:

Слайд 11


Аспектно ориентированное программирование в PHP, слайд №11
Описание слайда:

Слайд 12


Аспектно ориентированное программирование в PHP, слайд №12
Описание слайда:

Слайд 13


Аспектно ориентированное программирование в PHP, слайд №13
Описание слайда:

Слайд 14


Аспектно ориентированное программирование в PHP, слайд №14
Описание слайда:

Слайд 15


Аспектно ориентированное программирование в PHP, слайд №15
Описание слайда:

Слайд 16





Непонятно? Немного теории
(совсем чуть-чуть, честно!)‏
Описание слайда:
Непонятно? Немного теории (совсем чуть-чуть, честно!)‏

Слайд 17





Введение в АОП
Gregor Kiczales + 
команда XEROX PARC +
желание облегчить нам
жизнь = AspectJ
AspectJ(http://aspectj.org) – 
“lingua franca” в мире АОП
Описание слайда:
Введение в АОП Gregor Kiczales + команда XEROX PARC + желание облегчить нам жизнь = AspectJ AspectJ(http://aspectj.org) – “lingua franca” в мире АОП

Слайд 18





Базовые понятия
JoinPoint 
PointCut
Advice
Introduction
Aspect
Weaving
Описание слайда:
Базовые понятия JoinPoint PointCut Advice Introduction Aspect Weaving

Слайд 19





JoinPoint
JoinPoint - фундаментальное понятие АОП, под которым понимают любую четко идентифицируемую точку исполнения программы 
JoinPoint точки являются кандидатами возможной инъекции сквозного функционала
Описание слайда:
JoinPoint JoinPoint - фундаментальное понятие АОП, под которым понимают любую четко идентифицируемую точку исполнения программы JoinPoint точки являются кандидатами возможной инъекции сквозного функционала

Слайд 20





JoinPoint
Возможные JoinPoint точки в примере:
выполнение метода credit()‏
доступ к атрибуту balance
Описание слайда:
JoinPoint Возможные JoinPoint точки в примере: выполнение метода credit()‏ доступ к атрибуту balance

Слайд 21





PointCut
PointCut – набор(срез) JoinPoint точек, удовлетворяющих определенному условию.
PointCut бывают именованные и анонимные. 
PointCut – это некое подобие SQL запроса для JoinPoint точек
Пример анонимного среза, захватывающего исполнение метода Account :: credit()
Описание слайда:
PointCut PointCut – набор(срез) JoinPoint точек, удовлетворяющих определенному условию. PointCut бывают именованные и анонимные. PointCut – это некое подобие SQL запроса для JoinPoint точек Пример анонимного среза, захватывающего исполнение метода Account :: credit()

Слайд 22





Advice
Advice  - код, выполняемый для каждой JoinPoint точки, входящей в определённый срез PointCut.
Advice может выполняться до (before), после (after) или вместо (around) JoinPoint точки. 
Advice схож с традиционным ООП методом
Описание слайда:
Advice Advice - код, выполняемый для каждой JoinPoint точки, входящей в определённый срез PointCut. Advice может выполняться до (before), после (after) или вместо (around) JoinPoint точки. Advice схож с традиционным ООП методом

Слайд 23





Advice
Пример Advice метода для анонимного PointCut среза
Описание слайда:
Advice Пример Advice метода для анонимного PointCut среза

Слайд 24





Introduction
Introduction – инструкция для изменения статической структуры классов, интерфейсов и аспектов. 
Попробуем добавить метод setLog() во все классы, которые начинаются со строки “Foo”
Описание слайда:
Introduction Introduction – инструкция для изменения статической структуры классов, интерфейсов и аспектов. Попробуем добавить метод setLog() во все классы, которые начинаются со строки “Foo”

Слайд 25





Aspect
Aspect  - модуль в терминах АОП, некоторый аналог класса, который инкапсулирует в себе правила применения сквозного функционала.
Aspect  - конечный контейнер для всех АОП элементов: PointCut, Advice и Introduction. 
Aspect схож с ООП классом
(также позволяет объявлять и использовать 
обычные методы и атрибуты)
Описание слайда:
Aspect Aspect - модуль в терминах АОП, некоторый аналог класса, который инкапсулирует в себе правила применения сквозного функционала. Aspect - конечный контейнер для всех АОП элементов: PointCut, Advice и Introduction. Aspect схож с ООП классом (также позволяет объявлять и использовать обычные методы и атрибуты)

Слайд 26





Aspect
Пример аспекта(объединяем все вместе)‏
Описание слайда:
Aspect Пример аспекта(объединяем все вместе)‏

Слайд 27





Weaving
Weaving – процесс «вплетения» аспектов в логику приложения. 
Weaving процесс может происходить на уровне исходных кодов или же на уровне виртуальной машины (в случае PHP, это уровень исполнения opcode инструкций).
Описание слайда:
Weaving Weaving – процесс «вплетения» аспектов в логику приложения. Weaving процесс может происходить на уровне исходных кодов или же на уровне виртуальной машины (в случае PHP, это уровень исполнения opcode инструкций).

Слайд 28





АОП - вид сверху(или сбоку?)‏
Описание слайда:
АОП - вид сверху(или сбоку?)‏

Слайд 29





Фух...с теорией покончено
Описание слайда:
Фух...с теорией покончено

Слайд 30





Средства АОП для PHP
phpAspect – юная, но наиболее перспективная реализация АОП для PHP
Интересная попытка клонировать AspectJ
Аспекты вплетаются статически в код
Автор Willliam Candillon 
aoPHP – некое подобие АОП
Аспекты вплетаются «на лету»
Замороченный способ использования: Apache -> mod_rewrite -> aoPHP C++ интерпретатор -> PHP …бр-р-р)‏
aspectPHP – форк aoPHP
Не обновлялась с 2005 г
Работает только с PHP-4.3.10
AOP Library for PHP – спорная эмуляция АОП средствами PHP, 
Автор некто Dmitry Sheiko
runkit – PECL модуль, предоставляющий AOP Introduction возможности
Переопределение констант, функций, методов, классов, интерфейсов
Эх, жаль, что не в core   
Автор Sara Golemon
Описание слайда:
Средства АОП для PHP phpAspect – юная, но наиболее перспективная реализация АОП для PHP Интересная попытка клонировать AspectJ Аспекты вплетаются статически в код Автор Willliam Candillon aoPHP – некое подобие АОП Аспекты вплетаются «на лету» Замороченный способ использования: Apache -> mod_rewrite -> aoPHP C++ интерпретатор -> PHP …бр-р-р)‏ aspectPHP – форк aoPHP Не обновлялась с 2005 г Работает только с PHP-4.3.10 AOP Library for PHP – спорная эмуляция АОП средствами PHP, Автор некто Dmitry Sheiko runkit – PECL модуль, предоставляющий AOP Introduction возможности Переопределение констант, функций, методов, классов, интерфейсов Эх, жаль, что не в core Автор Sara Golemon

Слайд 31





Установка: 
Установка:
Описание слайда:
Установка: Установка:

Слайд 32





Принцип действия: 
Принцип действия:
Описание слайда:
Принцип действия: Принцип действия:

Слайд 33





Базовое использование: 
Базовое использование:
Описание слайда:
Базовое использование: Базовое использование:

Слайд 34





АОП поддержка: 
АОП поддержка: 
PointCut
Advice
Introduction
Aspect
Описание слайда:
АОП поддержка: АОП поддержка: PointCut Advice Introduction Aspect

Слайд 35





    “HelloWorld”
(ну куда же без него)‏
src/hello.php
Описание слайда:
“HelloWorld” (ну куда же без него)‏ src/hello.php

Слайд 36





    Пример аспекта
src/trace.aspect.php
Описание слайда:
Пример аспекта src/trace.aspect.php

Слайд 37





    В действии
Вплетение аспектов
Описание слайда:
В действии Вплетение аспектов

Слайд 38





    «За кулисами»
bin/hello.php
Описание слайда:
«За кулисами» bin/hello.php

Слайд 39


Аспектно ориентированное программирование в PHP, слайд №39
Описание слайда:

Слайд 40





Yikes! 
Описание слайда:
Yikes! 

Слайд 41





Достоинства
Достоинства
“Это” сделали для PHP!
Наиболее схожая с AspectJ функциональность
Описание слайда:
Достоинства Достоинства “Это” сделали для PHP! Наиболее схожая с AspectJ функциональность

Слайд 42





Недостатки
Недостатки
На данный момент не подходит для production – некоторые аспекты вплетаются с ошибками
(хотя чего мы хотим от версии 0.1.1?)‏
Функционально неполная реализация АОП (работа с аннотациями, расстановка приоритетов применения аспектов, наследование аспектов и проч.)‏
Генерируемый код накладывает негативный отпечаток на скорость работы
Не используется уровень виртуальной машины
Описание слайда:
Недостатки Недостатки На данный момент не подходит для production – некоторые аспекты вплетаются с ошибками (хотя чего мы хотим от версии 0.1.1?)‏ Функционально неполная реализация АОП (работа с аннотациями, расстановка приоритетов применения аспектов, наследование аспектов и проч.)‏ Генерируемый код накладывает негативный отпечаток на скорость работы Не используется уровень виртуальной машины

Слайд 43





АОП – еще одна «серебряная пуля»?
Конечно же нет, такой «пули не существует»
Естественно есть ярые фанаты и отчаянные противники АОП
АОП, в самом деле, позволяет посмотреть на проблему сквозного функционала на качественно ином уровне
В то же время АОП местами нетривиальная и непрозрачная методология
Как всегда, истина где-то посередине
Описание слайда:
АОП – еще одна «серебряная пуля»? Конечно же нет, такой «пули не существует» Естественно есть ярые фанаты и отчаянные противники АОП АОП, в самом деле, позволяет посмотреть на проблему сквозного функционала на качественно ином уровне В то же время АОП местами нетривиальная и непрозрачная методология Как всегда, истина где-то посередине

Слайд 44





АОП - достоинства
Эффективно адресует проблему сквозного функционала
Облегчает повторное использование кода - слабо связанные между собой аспекты легко взаимозаменять
Позволяет отложить принятие спорного решения, касающегося работы всего приложения, на «потом»
Описание слайда:
АОП - достоинства Эффективно адресует проблему сквозного функционала Облегчает повторное использование кода - слабо связанные между собой аспекты легко взаимозаменять Позволяет отложить принятие спорного решения, касающегося работы всего приложения, на «потом»

Слайд 45





АОП - недостатки
Неочевидность происходящего (слишком много “магии”). 
Аспекты сложно (невозможно?) протестировать отдельно от сплетенного кода. 
Требуются отличные от ООП паттерны проектирования аспектов
Описание слайда:
АОП - недостатки Неочевидность происходящего (слишком много “магии”). Аспекты сложно (невозможно?) протестировать отдельно от сплетенного кода. Требуются отличные от ООП паттерны проектирования аспектов

Слайд 46





«А оно вообще надо?» - решать исключительно вам :-)‏
Описание слайда:
«А оно вообще надо?» - решать исключительно вам :-)‏

Слайд 47





Ссылки по теме
AspectJ – http://aspectj.org
http://aspectmentor.com
phpAspect – http://phpaspect.org
aoPHP - http://www.aophp.net 
aspectPHP - http://www.cs.toronto.edu/~yijun/aspectPHP 
AOP Library for PHP - http://www.phpclasses.org/browse/package/2633.html 
PECL runkit – http://pecl.php.net/runkit
Описание слайда:
Ссылки по теме AspectJ – http://aspectj.org http://aspectmentor.com phpAspect – http://phpaspect.org aoPHP - http://www.aophp.net aspectPHP - http://www.cs.toronto.edu/~yijun/aspectPHP AOP Library for PHP - http://www.phpclasses.org/browse/package/2633.html PECL runkit – http://pecl.php.net/runkit

Слайд 48





Вопросы?
Описание слайда:
Вопросы?

Слайд 49


Аспектно ориентированное программирование в PHP, слайд №49
Описание слайда:

Слайд 50


Аспектно ориентированное программирование в PHP, слайд №50
Описание слайда:

Слайд 51


Аспектно ориентированное программирование в PHP, слайд №51
Описание слайда:

Слайд 52


Аспектно ориентированное программирование в PHP, слайд №52
Описание слайда:

Слайд 53


Аспектно ориентированное программирование в PHP, слайд №53
Описание слайда:

Слайд 54





Приходи к нам работать!
Новое направление компании БИТ – MMO игры:
Высоконагруженные серверные приложения (Linux, C++)‏
Artificial Intelligence
Adobe Shockwave 3D
Но нам нужны и талантливые web разработчики:
OOP
PHP(Limb3)‏
MySQL
Ajax
etc..
contacts@bit-creative.com
Описание слайда:
Приходи к нам работать! Новое направление компании БИТ – MMO игры: Высоконагруженные серверные приложения (Linux, C++)‏ Artificial Intelligence Adobe Shockwave 3D Но нам нужны и талантливые web разработчики: OOP PHP(Limb3)‏ MySQL Ajax etc.. contacts@bit-creative.com



Похожие презентации
Mypresentation.ru
Загрузить презентацию