【发布时间】:2009-08-16 15:29:02
【问题描述】:
我已经阅读了..网上的一些文章,但我不明白:|,你们能给我举个例子吗,如何制作这样的东西:$_SESSION['name'] = 'value'; 和 echo $_SESSION['name']。我怎样才能用 ZF 创建这样的东西?
最好的问候,
【问题讨论】:
标签: php zend-framework session
我已经阅读了..网上的一些文章,但我不明白:|,你们能给我举个例子吗,如何制作这样的东西:$_SESSION['name'] = 'value'; 和 echo $_SESSION['name']。我怎样才能用 ZF 创建这样的东西?
最好的问候,
【问题讨论】:
标签: php zend-framework session
将其放在页面顶部,在其他任何内容之前:
<?php
Zend_Session::start();
if(!Zend_Registry::isRegistered('session'))
{
$session = new Zend_Session_Namespace('YourSiteName');
Zend_Registry::set('session', $session);
}
?>
修改会话:
<?php
$session = Zend_Registry::get('session');
$session->user_name = $user_name;
?>
阅读您的会话:
<?php
$session = Zend_Registry::get('session');
echo 'Hello '.$session->user_name.' !';
?>
或者查看当前会话命名空间中的所有值:
<?php
$session = Zend_Registry::get('session');
foreach ($session as $index => $value)
{
echo "session->$index = '$value';<br />";
}
?>
【讨论】:
Zend_Registry 和Zend_Session_Namespace 之外,此代码还可以使用一些Zend_Http_CookieJar ;)
使用 Zend Framework 时,不应直接使用 $_SESSION,而应使用 Zend_Session 类。
您可能会在 Basic Usage 手册页上找到问题的答案。
例如,要使用存储在会话中的numberOfPageRequests,您可以使用如下内容:
$defaultNamespace = new Zend_Session_Namespace('Default');
if (isset($defaultNamespace->numberOfPageRequests)) {
// this will increment for each page load.
$defaultNamespace->numberOfPageRequests++;
} else {
$defaultNamespace->numberOfPageRequests = 1; // first time
}
我承认,直接使用$_SESSION 可能看起来有点复杂......但这为您提供了一个连贯的、面向对象的界面——至少是这样的^^
当然,您可能需要在此之前启动会话,使用
Zend_Session::start();
如果您还有其他更具体的问题,请随时提问!
【讨论】:
您可以这样做(如教程所述):
$defaultNamespace = new Zend_Session_Namespace('Default');
if (isset($defaultNamespace->name))
{
echo $defaultNamespace->name;
}
else
{
$defaultNamespace->name = "hi";
}
首先,您需要使用以下方法创建会话对象:
$defaultNamespace = new Zend_Session_Namespace('Default');
通过定义自定义值来代替默认值,这意味着您的任何变量都不会与来自其他系统或系统中使用唯一值代替默认值的其他部分的变量混合。
之后,每个变量都可以像普通的类变量一样被访问
任何变量都可以用
赋值$defaultNamespace->variable_name = value;
要获取任何值,只需获取相同的值即可;
$variable - $defaultNamespace->variable_name; // gets value
正如 Pascal 所说,您还需要调用
Zend_Session::start();
在这一切之前。
要了解更多信息,请使用Basic Usage Examples.
【讨论】:
new Zend_Session_Namespace('Default')