Singleton-классы PHP так или иначе совместно используются запросами?

15
задан Valerio Bozz 12 January 2018 в 10:39
поделиться

3 ответа

Короткий ответ нет.

Каждый запрос страницы обработан как уникальный экземпляр и единственная вещь, которые связывают их для каждого пользователя, сеансовые куки. Попытайтесь думать о PHP как о приложении, которое запускается, когда Вы называете сценарий, и умирает, когда сценарий заканчивается. Это не поддерживает состояния и по сути не знает ни о каких других экземплярах PHP.

шаблон "одиночка" является просто способом для Вас разработать класс, где можно назвать его где угодно в коде (как глобальное), не имея необходимость заботиться о том, инстанцировали ли он уже или не, и Вы хотите, чтобы он сохранился в памяти.

29
ответ дан 30 November 2019 в 23:58
поделиться

Каждый запрос сам содержавший и не обменивается данными с другими запросами (если Вы не используете определенные расширения для этого, как кэш-память). Также - одиночные элементы в Вашем приложении не влияли бы на отдельные запросы от отдельных пользователей.

то, Что должно вызвать беспокойство у Вас, является Вашим злоупотреблением шаблоном "одиночка". Одиночный элемент является версией OO глобального, и может вызвать некоторые странные ошибки, если Вы не осторожны. Лучше использовать ограниченные по объему операции, которые не полагаются на глобальные настройки и используют одиночные элементы экономно.

28
ответ дан 30 November 2019 в 23:58
поделиться

Я соглашаюсь, ответ нет. Я думаю о Шаблоне "одиночка" в PHP прямо сейчас и решил, что, хотя Шаблон "одиночка" может быть кодирован в PHP, он действительно не реализован, так как экземпляр не совместно используется через запросы (или хранится в памяти процесса, которая имеет место для сред веб-сервера как ASP.net, Java и Ruby on Rails?) Можно сериализировать экземпляр Singleton и сохранить его на сессии, но тем не менее, он не совместно используется через сессии. Я размышляю, что это должно было бы быть сохранено в кэше, чтобы полностью реализовать Шаблон "одиночка" в PHP. Но я еще не сделал этого, таким образом, я не уверен.

2
ответ дан 30 November 2019 в 23:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: