AOP\Weaver::aroundMethod

Redirigé depuis aroundMethod

public function aroundMethod(callable $joinpoint, callable $advice) : Handler

Description

Déclare un greffon $advice qui sera appelé à la place de chaque appel au point de coupe $joinpoint .

Le tissage des aspects doit être réalisé dans la méthode register d’un plugin Registerable.

Liste de paramètres

callable $joinpoint

La méthode – ou point de coupe – à laquelle le greffon va susbtituer.

callable $advice

La méthode, statique ou dynamique – ou greffon -, à appeler à la place du point de coupe.

Le greffon peut recevoir les mêmes paramètres que le point de coupe, ceux-ci étant reconnu à leur nom, à l’exception de ces paramètres réservés :

  • mixed $result : passé par référence et originellement valeur à null, vous devrez définir ici la valeur de retour du point de coupe, si celui en attendait une.
  • object $object : l’objet contexte du point de coupe.
  • Around_Method $joinpoint : Le point de jointure Around_Method comporte toutes les données concernant le point de coupe.

Si le greffon retourne une valeur, celle-ci sera la valeur de retour du point de coupe.

Valeur de retour

La méthode retourne un ITRocks\Framework\AOP\Weaver\Handler, objet représentant l’aspect, qui pourra servir par la suite à consulter les informations concernant le point de coupe ou à annuler l’aspect avec la méthode remove().

Limitations

A l’heure actuelle, un greffon ne peut pas être :

  • une fonction
  • un callable [$object, 'methodName'] , le seul objet accepté ici est $this (voir exemple).

Exemples

Voyez les exemples appliqués à beforeMethod, le fonctionnement est identique, la seule différence étant le moment où le greffon est appelé, ici en remplacement.

Dans votre point de coupe, utilisez le paramètre Around_Method $joinpoint pour appeler la méthode d’origine – ou point de coupe – par exemple comme ceci si la méthode attendait trois arguments et si on veut utiliser sa valeur renvoyée :

		$result = $joinpoint->call($original, $arguments, $list);

Voir aussi