Вопрос

Допустим, что в моем приложении у меня есть экземпляр объекта, созданный на странице 1.Затем пользователь переходит в какую-то другую часть приложения, и я хочу, чтобы экземпляр остался.Как я могу "сохранить" экземпляр?Сеансы?

Это было полезно?

Решение

Да, используйте сессия.

Звонить session_start() затем в начале вашей страницы сохраните ваш объект с чем-то вроде $_SESSION['myobject']=$myobject;

Доступ к более поздней странице возможен $_SESSION['myobject'] после этого тоже вызывается session_start()

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

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

Другие советы

Есть два способа, которые я использовал для своих приложений:сеансы и база данных.

Сеансы да, но это будет новый экземпляр с теми же свойствами, а не то же самое пример.Другими вариантами являются использование O / R-Mapper для сохранения объекта в БД и сохранения ключа для него в сеансе или использование memcached с уникальным ключом (скажем, идентификатором сеанса) - но это все равно не будет то же самое экземпляр - просто экземпляр с теми же свойствами.

Если вам нужен точно такой же экземпляр объекта между двумя запросами в PHP, боюсь, это невозможно (не невозможно, все выполнимо - но вам придется запустить PHP поверх сервера приложений какого-либо типа)

По сути, у вас есть два варианта: Состояние на стороне сервера или состояние на стороне клиента.

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

Состояние на стороне клиента может поддерживаться с помощью URL-адреса - обычно в параметрах строки запроса.Например, чтобы "запомнить" переменную $name между двумя страницами вы могли бы создать ссылку на первой странице, например, так: http://www.example.org/second_page.php?name=Jimbo, и затем вторая страница могла бы получить переменную через $_GET.Это гораздо сложнее сделать правильно, и у этого есть некоторые ограничения на то, сколько состояний вы можете передавать между страницами.По этой причине люди склонны использовать состояние на стороне сервера, даже когда состояние на стороне клиента было бы более подходящим.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top