https://medium.com/@msaim/php-abstraction-building-solid-foundations-and-streamlining-development-in-object-oriented-7deed92c3faa