Объясните, пожалуйста, часть кода паттерна Singletone (PHP), сам не разобрался

уважаемые специалисты! Не могу понять код ниже. Может, у кого-то найдется минутка по строчке объяснить..? Возникают следующие вопросы: 1) Зачем в if ( empty(self::$instance) ) программа проверяет эту ссылку self::$instance на существование.. и разрешает действие только, если "empty". Зачем нужно вот это: self::$instance = new self() и вот это: return self::$instance?

<?php  class Singleton {
    private static $instance;  
    private function __construct() { /* ... @return Singleton */ } 
                 private function __clone() { /* ... @return Singleton */ }
     private function __wakeup()  { /* ... @return Singleton */ }
      **public static function getInstance() {
            ****if ( empty(self::$instance) ) {
            self::$instance = new self();
        }
        return self::$instance;****
    }
    public function doAction() { }  } /* Применение*/  Singleton::getInstance()->doAction();  ?>**

Ответы (0 шт):