La lib php-aop fournit un cadre de développement pour la programmation orienté aspect (AOP). php-aop se base sur un intercepteur de code pour effectuer l'interception (le pointcut).

Certains intercepteurs ne supportent pas toutes les fonctionnalités de php-aop. La lib étant encore jeune, il y a pour l'instant que de 2 intercepteurs avec chacun ses qualités et ses défauts.

Liste des intercepteurs

pecl-aop-interceptor Recommandé, pour l'instant l'intercepteur le plus performant et qui supporte le plus de fonctionnalité de la lib php-aop.
patchwork-interceptor Un intercepteur en version alpha réalisé pour la R&D.

A faire :

laravel-interceptor Pour utiliser php-aop dans le framework Laravel. Laravel utilise un container principal, ça pourrait offrir approche intéressante pour intercepter les appels de méthodes et propriétés de classes (peut être coupler avec les évènements).
silex-interceptor Pour utiliser php-aop dans le micro-framework Silex. Dans Silex tout passe par le container principal basé sur Pimple. Passer par là me semble être un excellent moyen d'intercepter le code par une simple enveloppe (wrapper).
symfony-interceptor Pour utiliser php-aop dans le framework Symfony. Symfony utilisant un proxy, c'est parfait pour créer cet intercepteur vue qu'il est possible de réécrire les classes en cache et aussi de manipuler le proxy. Il existe d'ailleurs un bundle apportant l'AOP dans Symfony.

Créer un intercepteur

Pour faciliter la création d'intercepteur de code, vous pouvez utiliser le skeleton-interceptor qui implémente toutes les méthodes nécessaires.

Il suffit de renommer skeleton par le nom que vous donnez à votre intercepteur et remplir les méthodes.

Ne vous souciez pas de la logique des points de jointures (est-ce que tel joint point a cette méthode, etc), cette logique est nativement gérée par la lib php-aop, remplissez simplement les méthodes du skeleton.

N'hésitez pas à vous inspirer des autres intercepteurs, ça aide.

Lorsque votre intercepteur est fonctionnel, si vous souhaitez le rendre public sur AOP.io contactez moi (email dans mon profil Github ou en ouvrant une issue dans php-aop) pour que j'ajoute le repository https://github.com/aop-io/votre-interceptor et que je vous ajoute en tant que membre de l'organisation https://github.com/aop-io avec les accès complet au repository de votre intercepteur (push, merge, gestion des issues, etc).