PHP - паттерн Одиночка

Рассмотрим реализацию паттерна Одиночка на языке PHP:
Сущность которая должна быть в едниственном экземпляре у нас будет хранится в статической переменной

class Singleton
{
// единая функция для создания нового одиночки
// или же получения доступа к уже имеющемуся
    public static function getInstance()
    {
        static $instance = null; // статическая переменная
        if (null === $instance) { // проверка существования
            $instance = new static();
        }
        return $instance;
    }
/*скрываем конструктор
 - для того чтобы класс нельзя было создать в обход getInstance */
    protected function __construct()
    {
    }

/* далее метод (его может и не быть)
 - но для примера мы оставляем его, чтобы показать
возможность "уточнения" функционала в наследниках
*/
    public someMethod() 
    {
    }
} 

Можно "наследоваться" и как-то модифицировать класс:

// от одиночки можно наследоваться и уточнить функционал
class SingletonChild extends Singleton
{
// реализация дополнительных методов
// или переопределение существующих
}