ZF-2103: Zend_Session_Namespace - Optional argument to create namespace in deeper nodes

Issue Type: Improvement Created: 2007-10-26T10:57:55.000+0000 Last Updated: 2009-01-10T10:20:40.000+0000 Status: Closed Fix version(s): - 1.8.0 (30/Apr/09)

Reporter: Shekar Reddy (zendfw) Assignee: Ralph Schindler (ralph) Tags: - Zend_Session

Related issues: Attachments:


Currently, the namespace component creates namespaces only at the root of the session:

<pre class="highlight">
$user = new Zend_Session_Namespace( 'user' );

=> $_SESSION['user'] = array()

What if I want to store data deeper in the auth node to just group it and reduce clutter (aka modules) and to be able to count the number of items/namespaces in a node:

<pre class="highlight">
$_SESSION['auth']['user']['id'] = 1;
([node][namespace][key] = value)

In the above case, it would be much more powerful to be able to create the namespace under the 'auth' node so we could configure the keys in the 'user' namespace. We could introduce an optional 'node' argument to the Zend_Session_Namespace::__construct(), like so:

<pre class="highlight">
$user = new Zend_Session_Namespace( 'user', 'auth' );
[create the user namespace under auth node - auth node created automatically if it does not exist in session]

We can even go as deeper as we could by specifying an intelligent node-path:

<pre class="highlight">
$user = new Zend_Session_Namespace( 'user', 'auth:node2:node3' );
(create the user namespace under $_SESSION[auth][node2][node3] - all created automatically if they do not exist in session)

I guess the above feature adds more muscle to the namespace component and enables us to use it more powerfully.



Posted by Wil Sinclair (wil) on 2008-04-18T13:11:51.000+0000

This doesn't appear to have been fixed in 1.5.0. Please update if this is not correct.

Posted by Ralph Schindler (ralph) on 2008-07-21T14:08:35.000+0000

How does this benefit over using a smarter naming convention for the namespaces? For example like

<pre class="highlight">
$user = new Zend_Session_Namespace("user-auth"); 

OR over

<pre class="highlight">
$user = new Zend_Session_Namespace("user-auth"); 
$user->auth->node2 = 'value';


The bigger problem with adding more/deeper nodes is that the serialized version will take up more space in the file/database whatever.

Ill categorize as nice to have / next minor, but at currently I am not completely convinced yet. Perhaps talk it over in with some other people.


Posted by Shekar Reddy (zendfw) on 2008-08-12T18:29:45.000+0000

That's what I've been doing these days but it involves a lot of consistent code and work to maintain data in appropriate nodes. If we have the namespace created in a deeper node, keys added to the namespace automatically appear in the child node of the namespaced node and so it becomes much easier to maintain data and focus on business logic. Furthermore, the items under the namespace node can now be counted, can be disabled from adding more keys than a specified threshold, configured to expire, etc. and so we can create categorized namespaces with typical behaviors for the data inside the namespaces.

Posted by Ralph Schindler (ralph) on 2009-01-10T10:20:39.000+0000

Interesing feature, but I am not sure we'll have time to implement this within the 1.0 branch.

We concede that this component needs a rewrite, so ideas are being logged here:…

Have you found an issue?

See the Overview section for more details.


© 2006-2018 by Zend, a Rogue Wave Company. Made with by awesome contributors.

This website is built using zend-expressive and it runs on PHP 7.