У Magento 2, коли ви створюєте плагін "навколо"
public function aroundRenderResult(
\Magento\Framework\Controller\ResultInterface $subject,
\Closure $proceed,
ResponseHttp $response
) {
//...
$proceed($response);
//...
}
ви можете перейти до наступного плагіна, що завершився викликом фактичного оригінального методу, зателефонувавши / викликаючи переданий $proceed
метод. Це загальна модель дизайну, часто зустрічається в реалізаціях проміжного програмного забезпечення PHP Frameworks.
Однак - це дійсно представляє певну плутанину з деталями щодо впровадження. Конкретно
Якщо на додаток до
aroundPlugin
об'єкта / класу визначеноbefore
абоafter
плагін, коли вони запускаються стосовно ланцюга навколо плагінів?
тобто чи будуть усі попередні методи запускатись перед будь-якими методами навколо плагіна? Або перед плагінами буде запущено лише перед остаточним, реальним реальним методом?
Конкретна проблема, яку я намагаюсь знайти, я не можу отримати плагін, приєднаний до методу відправки, передній контролер Magento 2, коли Magento перебуває в режимі кешування на повній сторінці . Повний кеш сторінки керує плагіном навколо, який не викликає $proceed($response)
. Я спробував зануритися в якийсь код навколо цих плагінів, і мені стало важко міркувати про систему, не знаючи, як вона призначена для роботи плагінів.
тобто - опис на сторінці "Документи розробників" , в цьому конкретному випадку, є неточним. Незрозуміло, чи документація неправильна, чи це нещодавно введена помилка, чи це кращий випадок, чи моя конфігурація плагіна неправильна.
Хтось знає, шляхом прямого спостереження чи культурних знань, як ця пріоритетність повинна працювати?
\closure $proceed
проти\callable $proceed
плагіна? Офіційний документ тільки згадує\callable
і ніколи не зачіпає\closure
.