after listeners are used when we want to change the values returned by an original method or add some behavior after an original method is called.
Looking back at the
afterGetAddToCartUrl listener method definition, you will see that it has only one
$subject property assigned.
after method listener, the first and only 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.
This simple rule used for transformation is as follows:
getAddToCartUrl($product, $additional = ) afterGetAddToCartUrl($subject)
after listener methods do not need to have a return value.
before interceptor method, the
$subject property ...