If you're into Symfony/Laravel, you might want to look at the "Dependency Injection" pattern instead of the Singleton pattern. Fabien Potencier is doing a great job at explaining Dependency Injection on his blog. Another reading on Service Container vs Service Locator somewhat related in the accepted answer has greatly improve the separation of concerns of my PHP code.
Looking at both Observer pattern and Event Dispatcher pattern (here for theory, here for theory + Symfony) has been a great help building smart - well organized code for me.