セッションを使用してメッセージを格納する通知クラスを作成しています。私はそれらを多次元配列として作成する必要があるので、メッセージを間違ったページに表示しないように、異なる '名前空間'を利用することができます。ここでPHPセッション、配列が1に設定されている理由
は一例です。
print_r($_SESSION)
Array
(
[EVENT_CMS] => Array
(
[Notifier] => Array
(
[0] => 'Your settings have been saved.'
[1] => 'You must re-upload...'
)
)
)
今すぐ設定ページで、これらのメッセージは、適切なメソッドを呼び出して印刷されます。
クラス内のメッセージコンテナの設定に問題があります。これは私のコンストラクタは次のようになります。
public function __construct($namespace = 'Notifier') {
$this->_session_start();
if(defined('SESSION_NAMESPACE')){
$this->notifications =& $_SESSION[SESSION_NAMESPACE][$namespace];
} else {
$this->notifications =& $_SESSION[$namespace];
}
}
(。真のブロックが実行されるように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;
}
ここで、アレイをセッションに保存しますか? –
この例は不完全です。完全なコードを表示すれば、簡単に答えることができます。他の場所でセッション変数にアクセスするかどうかは不明です。 –
@DavidChan - 質問を関連するコードで更新しました。メッセージはセッション配列そのものに格納する必要があります。 – AVProgrammer