Предотвратить несколько экземпляров объекта - PullRequest
2 голосов
/ 01 января 2012

У меня есть суперкласс, который создает экземпляр моего класса Sql, поэтому все производные классы смогут выполнять запросы без создания своих собственных экземпляров Sql после их создания. Это хорошо работает, но у меня есть вопрос, из-за которого я запутываюсь. Один из производных классов создает экземпляр другого производного класса в своем конструкторе, поэтому теперь я считаю, что у меня есть 2 открытых экземпляра класса Sql, потому что каждый создает родительский экземпляр. Я не могу переопределить родительский класс ни в одном из производных классов, потому что им всем нужен доступ к экземпляру базы данных для выполнения их собственных запросов. Есть ли способ предотвратить вызов производным классом родительского конструктора, когда его создает другой производный класс?

Я думаю передать параметр классу и вызвать родительский конструктор, только если он соответствует требованиям.

function__construct($param) {
    if($param == false) {
        parent::__construct();
    }
 }

Считаете ли вы, что такой подход имеет смысл, или вы предвидите любые ошибки, возникающие в будущем?

1 Ответ

3 голосов
/ 01 января 2012

Я думаю, что вы пытаетесь использовать шаблон синглтона.Для этого вам нужно просто объявить ваш конструктор как закрытый метод:

private function __construct() {

}

и инициализировать его один раз, вызвав статический метод, например:

static function connect_to_mysql() {
    //procedure of connecting...
}

myClass::connect_to_mysql();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...