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