A decorator allows us to dynamically extend the behavior of a particular object at runtime, without needing to resort to unnecessary inheritance. Let me give you a demonstration.
There's no shortage of content at Laracasts. In fact, you could watch nonstop
for days upon days, and still not see everything!