Опишу пример. Делаем класс "Бог", у него есть __construct с вызовом методов получения данных: PHP: class God { public $data; public function __construct() { $this->data = $this->getData(); } private function getData() { // вызов методов получения данных } } Дальше от этого класса создаётся куча других классов, назовём их "Ничтожный", которые расширяют его. К примеру: PHP: class Zeus extends God { public function __construct() { parent::__construct(); } } И в некотором сценарии создаются объекты всех этих ничтожных детей. И получается так, что при каждом создании плюётся родительский божеский parent::__construct с повторным из раза в раз получением данных. PHP: //... некоторый php-сценарий $zeus = new Zeus(); $apollo = new Apollo(); $aphrodite = new Aphrodite(); ... Возможно ли паттерн синглтона вкрутить в это дело, чтобы при очередном создании ничтожных детей не создавать очередное божеское создание родителя? Или я просто неправильно подошёл к этому делу? p.s. Пока описывал, задумался, а ведь каждый этот подкласс не создаёт никаких родительских богов, они сами являются богами и включают в себя все эти получения данных. Тогда нужно вынести все данные в какой-нибудь отдельный класс оруженосца, на котором будет синглтон и призывать его в очередном классе наследуемом от божеского. Но не знаю, достаточно ли это адекватно.
Ну не вызвать конструктор базового класса можно, но вы скорее всего нарушите работу. А вообще, синглтон не про наследование вообще. При наследовании всегда ВСЕ поля и методы базового класса будут и у класса наследника. Теоретически вы можете сделать $data статическим, и проверять перед вызовом, инициализировано ли оно. Ну это что прямо из вашего кода можно сказать, с ничтожными богами PHP: class God { static public $data = null; public function __construct() { if (!self::$data) { self::$data = $this->getData(); } } // ... } Теперь на всю божественную семейку будет один экземпляр $data. --- Добавлено --- Не самый лучший вариант, но надо понимать, чего вы сделать пытаетесь, чтоб предложить лучше