Dans Magento 2, lorsque vous créez un plug-in "autour"
public function aroundRenderResult(
\Magento\Framework\Controller\ResultInterface $subject,
\Closure $proceed,
ResponseHttp $response
) {
//...
$proceed($response);
//...
}
vous pouvez passer au plugin suivant, aboutissant à l'appel de la méthode d'origine, en appelant / invoquant la $proceed
méthode transmise . Il s'agit d'un modèle de conception courant, souvent observé dans les implémentations de middleware PHP Frameworks.
Cependant, cela crée une certaine confusion avec les détails de la mise en œuvre. Plus précisément
Si, outre
aroundPlugin
un objet, un objet / une classe a défini un pluginbefore
ou unafter
plugin, quand est- ce qu'ils se déclenchent par rapport à la chaîne de plugins around?
c'est-à-dire que toutes les méthodes antérieures se déclencheront avant qu'une méthode autour du plugin ne se déclenche? Ou est-ce que les plugins avant ne seront activés qu’avant le déclenchement final de la méthode réelle et réelle ?
Le problème spécifique que je tente de localiser est qu’il me semble impossible d’attacher un plug-in à la méthode d’envoi du contrôleur frontal Magento 2 lorsque Magento est en mode de mise en cache pleine page . Le cache de page complet fonctionne par un plugin around qui n'appelle pas$proceed($response)
. J'ai essayé de fouiller dans une partie du code autour de ces plugins et j'ai trouvé difficile de raisonner le système sans savoir comment il est prévu que les plugins fonctionnent.
C'est-à-dire que la description sur la page des documents de développement semble, dans ce cas particulier, être inexacte. Il est difficile de savoir si la documentation est erronée, ou s'il s'agit d'un bogue récemment introduit, s'il s'agit d'un cas périphérique ou si la configuration de mon plugin est incorrecte.
Est-ce que quelqu'un sait, par observation directe ou par connaissance culturelle, comment cette priorisation est censée fonctionner?
\closure $proceed
vs\callable $proceed
dans un plugin? Le document officiel mentionne seulement\callable
et ne touche jamais\closure
.