Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于会话的消息在类中不起作用_Php_Class_Session - Fatal编程技术网

Php 基于会话的消息在类中不起作用

Php 基于会话的消息在类中不起作用,php,class,session,Php,Class,Session,我有一个主文件(framework.php)需要几个类。为了简化我的问题,让我们假设只使用类messages的消息,并使用类automation进行自动化。messages类存储用户刷新页面时在前端显示的会话消息。当我在中添加消息时,自动执行我通过$msg=新消息执行此操作$msg->add('s','helloworld!')但是每次我想添加一个$msg,我都会重复$msg=新消息,因为这很混乱,所以我只想调用这个类一次。因此,我在构造函数中初始化该类,如下所示: class Automate

我有一个主文件(framework.php)
需要几个类。为了简化我的问题,让我们假设只使用类
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?我的意思是这毫无意义,它只会在显示结束时被调用!