


drupal имитирует парадигмы АОП с помощью хуков, которые в основном позволяют разработчикам вплетать фрагменты кода в поток выполнения. вы можете взглянуть на хуки, которые разработчик может реализовать здесь.
В качестве быстрого примера, если бы я разрабатывал новый модуль на основе узлов (узлы являются базовой формой данных в drupal), у меня был бы мгновенный доступ к комментариям и таксономии без дополнительной работы с моей стороны. модули комментариев и таксономии могут подключаться к узлам и обеспечивать эту дополнительную функциональность. в этом смысле мне не нужно учитывать такие особенности в моей программе, но я могу воспользоваться этой гибкостью.
Drupal - это «мультипарадигмальный» фреймворк, и только некоторые его части реализуют «своего рода» АОП:
Парадигму АОП в Drupal можно было бы лучше представить как управляемую событиями, и все это происходит с помощью концепции хуков в Drupal. Например, когда вы делаете следующее:
mymodule_init()то, что вы объявляете, в псевдокоде:
subscribe mymodule to "hook events" of type init
Когда ядро Drupal запускает module_invoke_all('init') (называемый в _drupal_bootstrap_full() - код доступен здесь), это говорит Drupal
notify all subscribers to "hook events" of type init that this has occurred
by passing any relevant arguments to them
and letting them run the code they define in their hook_init()
Итак, хотя PHP по-прежнему является процедурным языком - и ваш mymodule_init() может делать всевозможные сумасшедшие, неинкапсулированные вещи, если вы действительно этого захотите, - Drupal по-прежнему отвечает. В некотором смысле Drupal решает, вызывать ли ваш код в первую очередь.
Таким образом, Drupal может превращать свои собственные фазы выполнения в квази-АОП, определяя
суставные точки (функции module_invoke*()) и позволяя вам написать свой собственный Pointcuts (ваша функция mymodule_*(). Соглашение об именах должно соответствовать имени ловушки Drupal).
Для получения дополнительной информации об этом, и особенно о мультипарадигматической природе Drupal, попробуйте Отличный блог Ларри Гарфилда.