Для чего нужен singleton?
Синглтон - прекрасный индикатор. Если человек задает вопрос, зачем он нужен - значит, этому человеку лень прочитать даже Википедию.
Впрочем, есть утешительный вариант: этот человек просто еще не написал ни одной работоспособной программы, и изучать шаблоны проектирования ему тупо рано.
Есть private static $instance = null
И есть public static function getInstance(){
if (self::instance === null){
 self::instance = new self();
} 
return self::instance;
}
То есть мы помещаем в переменную instance объект класса и потом через getInstance получаем этот объект, а не создаем каждый раз. Это удобно, но нужно использовать только там где стоит. Например для подключения к базе данных.