Это может быть немного offtop, однако позволю себе заметить, что Singleton - это как правильно выразился neko - "идеологически неправильный".
Мы как-то им очень увлеклись, и использовали его и для очень многих классов, например, Request, Response, Tree и т.д. Однако оказалось, что это приводит к большим проблемам для тестирования и наносит практически непоправимый ущерб гибкости кода, так как при использовании одиночек мы явно указываем имя класса, а это с точки зрения объектно-ориентированного программирования в корне неправильно.
В ходе опытов выяснилась только 1 сфера применения данного паттерна - Registry, которая работает как глобальная фабрика для часто используемых объектов. Во всех остальных случаях целесообразнее использовать Lazy Loading и Monostate.
Приблизительно идею Registry можно взять отсюда.
http://www.phppatterns.com/index.php/article/articleview/75/1/1/