Может быть, я просто не вижу этого, но есть ли другой способ доступа к ранее созданному пространству имен сеанса, кроме вызова $_SESSION
напрямую? Помимо того факта, что я действительно не хочу этого делать, документация Zend также советует против этого :
в то время как $ _SESSION все еще доступна в глобальном пространстве имен PHP, разработчики должны воздерживаться от прямого доступа к ней, так что Zend_Session и Zend_Session_Namespace могут наиболее эффективно и надежно предоставлять свой набор связанных с сеансом функций.
Класс Zend_Session_Namespace не имеет статического метода для получения пространства имен, и хотя теперь устаревший метод namespaceGet
в Zend_Session инструктирует меня использовать Zend_Session_Namespace#getIterator
, этот метод не является статическим.
Это значит, что мне нужно инициализировать новое пространство имен, используя new
ключевое слово. Проблема в том, что это не включает ранее заданные переменные:
$ns = new Zend_Session_Namespace('foo'); $ns->foo = 'bar';
По следующему запросу:
print_R(new Zend_Session_Namespace('Foo'));
… печатает это:
Zend_Session_Namespace Object ( [_namespace:protected] => Foo )
что кажется очевидным.
Итак, как я могу получить ранее созданное пространство имен, не используя $_SESSION['Foo']
?