Modifying functions with the use of plugins – Interception
One of the biggest problems in Magento 1.x was that changing the behavior of a function in a class that didn't have an event trigger had to be rewritten. This works fine if only a single rewrite for a class was used, but when using a large number of extensions, there is a risk that multiple extensions rewrite the same class, which can result in unpredictable results.
In Magento 2, this problem is partly solved by introducing Interception in the form of plugins. With the use of plugins, it is possible to modify a function in three places:
Before execution: With the before plugin, it is possible to (pre)process any data given to the original function by modifying the original function arguments; this allows you to replace the original method or change the input variables and supply them to the original method.
Around execution: In the around plugin, you can modify both the input and output values of the original function. In your own...