我目前正在为客户处理一个大型项目,为了帮助简化事情并使管理会话更容易,我创建了一个会话类,这意味着如果我改变管理会话的方式,我可以访问会话的结构在一个文件中而不是多个文件中,会话已被回显(例如用户名或当前页面)
我的班级有 3 种类型的函数 setter、getter 和 unsetter,这是不言自明的。
现在在这种情况下,我直接向会话类设置一条错误消息,然后从另一个类中获取错误消息,该类从其中的会话中调用一个函数。
以下是我的文件的简化版本,显示了我认为相关的代码
c_session.php
class session {
private $instance = 'isntname';
private $A_user = 'user';
private $A_page = 'page';
private $A_message = 'message';
//Set messages to the session.
public function set_message($type, $value) {
$_SESSION[$this->instance][$this->A_message][$type] = $value;
}
//Get messages from the session.
public function get_message() {
return $_SESSION[$this->instance][$this->A_message];
}
//Unset messages from the session.
public function unset_message() {
#unset($_SESSION[$this->instance][$this->A_message]);
}
}
c_operations.php
class operations {
//Display all pending messages.
public function display_pending_messages() {
if(session::get_message() != null) {
foreach(session::get_message() as $type => $value) {
if(strlen($type) != null) {
echo '
<div class="panel ' . $type . '">
' . $value . '
<span class="close" onclick="hide_parent_element(this);">X</span>
</div>
';
}
}
session::unset_message();
}
}
}
例子.php
$session->set_message('confirm', 'THIS IS A CONFIRM');
$session->set_message('error', 'THIS IS AN ERROR');
$session->set_message('notice', 'THIS IS A NOTICE');
$session->set_message('warning', 'THIS IS A WARNING');
var_dump($_SESSION);
$operation->display_pending_messages();
收到的错误/通知等
Notice: Undefined property: operations::$instance in /var/www/_classes/parent_session.php on line 43
Notice: Undefined property: operations::$A_message in /var/www/_classes/parent_session.php on line 43
Notice: Undefined index: in /var/www/_classes/parent_session.php on line 43
第 43 行是指该行return $_SESSION[$this->instance][$this->A_message];
现在,如果我调用get_message()
并unset_message()
直接通过$session->get_message()
它按预期工作,但在这种情况下通过另一个函数$operation->display_pending_messages()
会返回上述错误。显然这与$this->
操作员有关,但我不确定如何阻止这种情况。我尝试了各种搜索,虽然找到了类似的东西,但在这种情况下并没有帮助。
有人可以解释我哪里出了问题以及如何解决这个问题吗?
提前致谢。