Включить все классы при чтении из Zend_Session_Namespace? - PullRequest
2 голосов
/ 29 марта 2011

В моем сеансе есть два пространства имен: «глобальное» и «пользовательское»

В "global" есть только несколько настроек, а в "user" у меня есть сериализованный пользовательский объект, который, я думаю, сохранен правильно: (Это из файла сессии)

глобальный | а: 16: { [...] с: 12: "last_request"; я: 1301390173; [...] }

Пользователь | а: 1: { с: 10: "userObject"; O: 16: "currentUserModel": 24: { [...] s: 10: "* _ Идентификатор роли"; s: 7: "премиум"; [...] } }

Когда я делаю это: $sess = new Zend_Session_Namespace('global');

Я получаю сообщение об ошибке при включении файла «currentUserModel.php», который мне не нужен, потому что на данном этапе мне не нужен объект пользователя - все, что я хочу сделать, - это получить мое «глобальное» пространство имен.

Теперь вопрос: Нужно ли включать все классы для всех объектов, хранящихся в всех моих пространствах имен, или можно включить только классы для объектов, находящихся в пространстве имен Я получаю доступ?

Заранее спасибо

1 Ответ

2 голосов
/ 29 марта 2011

Пространство имен в Zend_Session - это просто слой поверх глобальной переменной $ _SESSION.В php эти пространства имен не существуют.В Zend_Session пространство имен является ключом из связанного массива.

Таким образом, когда вы загружаете пространство имен сеанса, вы фактически загружаете весь $ _SESSION, за исключением того, что вы не можете получить доступ к другим «пространствам имен» через этот Zend_Session.Так что да: вам нужно включить файл currentUserModel.php перед сеансом.

Другой метод - правильно использовать магические методы __sleep () и __wakeup () из класса, чтобы сериализовать только свойства класса какассоциативный массив, и тогда вы уже готовы.

...