Использование Singletons в PHP - PullRequest
       18

Использование Singletons в PHP

3 голосов
/ 02 декабря 2009

Я хочу использовать созданный мной DB Singleton в нескольких методах класса. Является ли более уместным инстанцировать Singleton в каждом методе индивидуально или инстанцировать его через __constructor () и обращаться к нему из переменной в каждом методе?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 02 декабря 2009

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

Итак, оба решения будут работать и давать одинаковый результат; по крайней мере, если ваш класс БД используется каждый раз, когда создается экземпляр вашего класса - и, конечно, разница в производительности, вероятно, будет незначительной.


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

... Что означает Внедрение зависимостей будет намного проще (вам нужно будет изменить только метод __construct, а не каждый метод класса) , если вы хотите использовать его однажды - например, для «моделирования» вашего класса БД, для целей автоматического тестирования.

Для получения дополнительной информации вы можете взглянуть на это сообщение в блоге: Что такое инъекция зависимостей?

0 голосов
/ 02 декабря 2009

Является ли синглтон таким, чтобы его можно было использовать при каждом создании экземпляра класса? Или это только иногда используется в методах, которые не всегда вызываются? Если первое, то, вероятно, проще сделать это в конструкторе; если последнее, то эффективность будет предлагать только создание экземпляра по требованию в каждом методе (это предполагает, что накладные расходы на первоначальное создание синглтона значительны - если это не так, просто сделайте это в конструкторе и избавьте себя от хлопот). *

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