Zend Framework Session: Using Namespace
Zend Framework Session Step By Step Tutorial - Part 2: In this post, we will learn to implement namespace into session at Zend Framework. If you are not familiar with namespace, don't worry. It is simple. Let's do it.
Simply, namespace is like name of groups of associative arrays, keyed by strings. For practice, we use our previous practice.
Ok, we want to count number of a particular page request form a visitor. See this picture:

To do this, open your UserController.php within application/controllers. Include Zend/Session/Namespace.php at first line after delimeter.
require_once 'Zend/Session/Namespace.php';
Edit loginFormAction() method become like this:
public function loginFormAction()
{
$request = $this->getRequest();
$ns = new Zend_Session_Namespace('HelloWorld');
if(!isset($ns->yourLoginRequest)){
$ns->yourLoginRequest = 1;
}else{
$ns->yourLoginRequest++;
}
$this->view->assign('request', $ns->yourLoginRequest);
$this->view->assign('action', $request->getBaseURL()."/user/auth");
$this->view->assign('title', 'Login Form');
$this->view->assign('username', 'User Name');
$this->view->assign('password', 'Password');
}
At line 5, we define object of namespace. The namespace, we named "HelloWorld". It is like $_SESSION['HelloWorld']. You can put name such as mynamespace, myapplication, etc.
Next, at line 7, we check value of $ns->yourLoginRequest. It is like $_SESSION['HelloWorld']['yourLoginRequest']. Next, modify loginform.phtml within application/views/scripts/user. Update become like this:
<? include "header.phtml"; ?>
<h1><?=$this->escape($this->title);?></h1>
You have entered this page: <?=$this->escape($this->request);?> time(s).
<form method='post' action='<?=$this->escape($this->action);?>'>
<table>
<tr>
<td><?=$this->escape($this->username);?></td>
<td><input type='text' name='username'></td>
</tr>
<tr>
<td><?=$this->escape($this->password);?></td>
<td><input type='password' name='password'></td>
</tr>
</table>
<input type='submit' name='login' value='Login'>
</form>
<? include "footer.phtml"; ?>
Now, point your browser to http://localhost/test/zend/helloworld/web_root/user/loginform. You may get screen like picture above.
Ok, try again for userPageAction() at controller. Update become like this:
public function loginFormAction()
{
$request = $this->getRequest();
$ns = new Zend_Session_Namespace('HelloWorld');
if(!isset($ns->yourLoginRequest)){
$ns->yourLoginRequest = 1;
}else{
$ns->yourLoginRequest++;
}
$this->view->assign('request', $ns->yourLoginRequest);
$this->view->assign('action', $request->getBaseURL()."/user/auth");
$this->view->assign('title', 'Login Form');
$this->view->assign('username', 'User Name');
$this->view->assign('password', 'Password');
}
Then, update its view at application/views/scripts/user/userpage.phtml:
<? include "header.phtml"; ?> <h1>Hello, <?=$this->escape($this->real_name);?></h1> You have entered this page: <?=$this->escape($this->request);?> time(s). <a href='<?=$this->escape($this->urllogout);?>'>Logout</a> <? include "footer.phtml"; ?>
| Series this article: Zend Framework Session: Introduction Zend Framework Session: Using Namespace Zend Framework Session: Accessing Session Data Zend Framework Session: Seing All Values at Namespace Zend Framework Session: Locking and Unlocking Namespace Zend Framework Session: Automatic Expiration Tag: framework, zend, zend framework, session, namespace Category: PHP Framework Post : April 23rd 2008 Read: 11,175 blog comments powered by Disqus |
