Уже много лет объектно-ориентированный подход к программированию пользуется широкой популярностью. В небольших краткосрочных проектах едва ли будут заметны его преимущество, но без него любой крупный проект фактически обречен. Именно объектно-ориентированные языки программирования имеют все необходимое, для того, что бы представить бизнес-логику проекта в наглядном виде. Даже при проектировании самой логики системы ныне напрашивается диаграмма классов UML. Наглядная бизнес логика позволяет легко включаться в проект новым участникам, бережет время авторам кода, вернувшимся в проект после длительного перерыва. Наглядная бизнес логика ощутимо сокращает число ошибок в проекте. Но достаточно ли использования объектно-ориентированного подхода к программированию для того, что бы достичь столь желанной наглядной бизнес логики? Очевидно - нет. Добиться изящной объектно-ориентированной программной архитектуры достаточно сложно. Но если вы использовали приемы из книги “Refactoring: Improving the Design of Existing Code”, Martin Fowler, возможно вам это удалось.
Однако даже теперь мы можем найти в коде сквозную функциональность (crosscutting concerns), участвующую в самых различных классах (протоколирование, кеширование, синхронизация, трассировка, контроль безопасности, контроль транзацкий). Организовать подобную программную логику поможет AOSD (Апектно-ориентированная разработка программного обеспечения, http://en.wikipedia.org/wiki/Aspect-oriented_programming).
Так что же такое AOSD? Моя подробная статья (10 стр.) об этой, обретающей популярность, парадигме была опубликована на днях в PHPIns!de #17 (http://phpclub.ru/detail/download/2006/jan-feb/phpi17_2006.pdf). Статья содержит множество практических примеров, призванных предметизировать столь абстрактную область как AOSD и помочь быстрее понять и оценить преимущества данного подхода. Статья рассчитана в первую очередь на программистов PHP. Цель ее в том, что бы показать, как можно использовать AOSD в PHP проектах уже сегодня