around listeners are used when we want to change both the arguments and the returned values of an original method or add some behavior before and after an original method is called.
Looking back at the
aroundGetAddToCartUrl listener method definition, you will see that it has four properties assigned in sequence—
after method listener, the first property is always the
$subject property, which contains the instance of the object type being observed and not the return value of the observed method. The second property is always the
$proceed property of
\Closure. The properties following the
$proceed match the properties of the observed