Властивість sortOrder для плагіни в Magento визначає, коли їх викликати (до, після або навколо методу), за умови, що для одного й того ж методу налаштовано більше одного плагіна. Правила пріоритетності
<config>
<type name="{ObservedType}">
<plugin name="{pluginName}" type="{PluginClassName}" sortOrder="1" disabled="false" />
</type>
</config>
такі:
- Перед виконанням оригінального методу Magento запустить плагіни перед від найменшого до найбільшого значення в sortOrder.
- . Частина коду плагіна навколо також буде виконана від найменшого до найбільшого значення перед викликом оригінального методу (викликається).
- Властивість після того, як плагін викликається від найбільшого до найменшого після виклику оригінального методу.
Приклад:
Припустимо, що є три класи плагінів (Plugin10, Plugin20, Plugin30). Кожен клас плагіна має методи перед, після того, як плагін та навколо для одного й того ж методу. sortOrder виглядає наступним чином для кожного з них:
Plugin10 - 10
Plugin20 - 20
Plugin30 - 30
Плагіни та оригінальний метод будуть викликані в такому порядку:
1 Plugin10::beforeMethod
2 Plugin10::aroundMethod // first part of the code,that is called before callable
3 Plugin20::beforeMethod
4 Plugin20::aroundMethod // before executing callable
5 Plugin30::beforeMethod
6 Plugin30::aroundMethod // before executing callable
7 Class:method
8 Plugin30::aroundMethod // after executing callable
9 Plugin30::afterMethod
10 Plugin20::aroundMethod // after executing callable
11 Plugin20::afterMethod
12 Plugin10::aroundMethod // after executing callable
13 Plugin10::afterMethod