https://mixrolikus.cc/video/uARTy_sJrIo/solid-dependency-inversion-principle-in-laravel-explained