Em uma classe PHP5, quando é chamado um construtor privado?

Digamos que estou escrevendo uma classe PHP (> = 5.0) que deve ser um singleton. Todos os documentos que li dizem tornar o construtor da classe privado, para que a classe não possa ser instanciada diretamente.

Então, se eu tiver algo parecido com isto:

class SillyDB
{
  private function __construct()
  {

  }

  public static function getConnection()
  {

  }
}

Existem casos em que __construct () é chamado, exceto se eu estiver fazendo um

new SillyDB() 

chamar dentro da própria classe?

E por que tenho permissão para instanciar o SillyDB de dentro dele mesmo?

questionAnswers(5)

yourAnswerToTheQuestion