Php 基于会话的消息在类中不起作用
我有一个主文件(framework.php)Php 基于会话的消息在类中不起作用,php,class,session,Php,Class,Session,我有一个主文件(framework.php)需要几个类。为了简化我的问题,让我们假设只使用类messages的消息,并使用类automation进行自动化。messages类存储用户刷新页面时在前端显示的会话消息。当我在中添加消息时,自动执行我通过$msg=新消息执行此操作$msg->add('s','helloworld!')但是每次我想添加一个$msg,我都会重复$msg=新消息,因为这很混乱,所以我只想调用这个类一次。因此,我在构造函数中初始化该类,如下所示: class Automate
需要几个类。为了简化我的问题,让我们假设只使用类messages
的消息,并使用类automation
进行自动化。messages类存储用户刷新页面时在前端显示的会话消息。当我在中添加消息时,自动执行我通过$msg=新消息执行此操作$msg->add('s','helloworld!')
但是每次我想添加一个$msg
,我都会重复$msg=新消息,因为这很混乱,所以我只想调用这个类一次。因此,我在构造函数中初始化该类,如下所示:
class Automate
{
protected $msg;
//public $connection;
public $cke;
public $debug = false;
public $disallow_insert;
public $bImgUp = BACKEND_IMAGE_UPLOAD_PATH;
public $fImgUp = FRONTEND_IMAGE_UPLOAD_PATH;
public function __construct() {
global $disallow_insert;
$this->disallow_insert = $disallow_insert;
$this->cke = (bool) self::ckeCheck();
$this->msg = new Messages();
}
在我的主文件中,我添加了它$msg=newmessages()代码>这样我就可以调用display函数echo$msg->display()代码>
但是这个方法不起作用(没有错误,但仍然有效),唯一有效的方法是初始化$msg=newmessages()代码>在每次添加或显示之前。我做错了什么
我应该提到我正在使用
更新:
通过注释messages类中的clear
函数,我已经确定了添加消息的原因。看起来似乎变量在显示之前就被取消设置了。我在研究OOP实践后发现了它。我通过以下方式向singelton发送a级邮件:
public static function getInstance()
{
static $instance = NULL;
if (NULL === $instance) {
$instance = new static();
}
return $instance;
}
在我的课堂上
var $msg;
public function __construct() {
$this->msg = Messages::getInstance();
}
我认为messages类需要构造一次,而不是多次,这就是为什么clear函数一直被调用的原因 如何通过getter从automation
类外部访问$msg
变量?$msg=newmessages();请记住,消息存储在会话变量中(请参见脚本),您可以尝试在messages::clear()
方法中使用debug\u print\u backtrace()
,以查看它实际被调用的时间和原因。噢,感谢这个小函数!我不知道这件事。我在[C:\xampp\htdocs\fagard\u designs\neou\cms\framework\classes\Messages.php:114]调用了0条消息->clear()。[C:\xampp\htdocs\fagard\u designs\neou\cms\update\u pages.php:20]调用了1条消息->display(),这是否意味着在显示之前会调用clear?我的意思是这毫无意义,它只会在显示结束时被调用!