我正在创建一个使用会话存储消息的通知类。我需要将它们创建为多维数组,因此我可以利用不同的“名称空间”,从而防止消息显示在错误的页面上。PHP会话,为什么数组设置为1
下面是一个例子:
print_r($_SESSION)
Array
(
[EVENT_CMS] => Array
(
[Notifier] => Array
(
[0] => 'Your settings have been saved.'
[1] => 'You must re-upload...'
)
)
)
现在在设置页面上,这些消息将会以适当的方法的调用打印。
我在设置类中的消息容器时遇到了问题。这是我的构造是什么样子:(该SESSION_NAMESPACE常量的定义,因此执行真正块)
public function __construct($namespace = 'Notifier') {
$this->_session_start();
if(defined('SESSION_NAMESPACE')){
$this->notifications =& $_SESSION[SESSION_NAMESPACE][$namespace];
} else {
$this->notifications =& $_SESSION[$namespace];
}
}
$Notify = new Notifier();
$Notify->add($_GET['test']);
print_r($_SESSION);
上面的代码产生了我这个数组:
$_SESSION
Array
(
[EVENT_CMS] => Array
(
[Notifier] => 1
)
)
添加消息方法应该更新会话,对吧?由于通知数组是一个参考?对update_session()的调用对输出没有影响...
public function add($message, $class = NULL) {
$message_node = $message;
$this->notifications[] = $message_node;
$this->update_session();
}
public function update_session(){
$this->SESSION[$this->namespace] &= $this->notifications;
}
你在哪里将数组存储到会话中? – 2012-02-13 20:16:24
该示例不完整。显示完整的代码,它会更容易回答。如果您在其他地方访问会话变量,这并不明显。 – 2012-02-13 20:18:58
@DavidChan - 我用相关代码更新了问题;这些消息应该存储在会话数组本身中。 – AVProgrammer 2012-02-13 20:30:46