在 PHP 中为用户存储 error/info 消息的位置?

Where to store error/info messages for the user in PHP?

我想知道,在 PHP 中为用户存储消息的最佳方式是什么。对于消息,我的意思是

Authentication successful

Please enter a valid e-mail address

目前我正在开发一个将它们存储在 $_SESSION 变量中的项目,但我认为这不是一个好的解决方案。

简短说明我现在是怎么做的(class Message 是我创建的)

$_SESSION["msg"][] = new Message("...");

foreach ( $_SESSION ["msg"] as $msg ) :
    echo $msg->getText();
endforeach;

unset ( $_SESSION ["msg"] );

这只是完整代码的简化版本,但您应该明白了。

编辑:忘了说,我正在使用 MVC 框架并希望从输出中分离逻辑。

只能推测您的 Message Class 的 nature/contents。然而,在这里;试图模拟一个名为 Message 的 class 模型;您的视图脚本中的用法也显示在 Class 下方。确保 $_SESSION 在两个脚本上都处于活动状态....也许,这可能会为如何处理您的独特案例提供一些新的思路:

    <?php

        //FIRST CHECK IF SESSION EXIST BEFORE STARTING IT:
        if (session_status() == PHP_SESSION_NONE  || session_id() == '') {
            session_start();
        }

        class Message {

            protected $msg;

            public function __construct() {
                if(!isset($_SESSION['msg'])){
                    $_SESSION['msg']    = array();
                }
            }

            public function setText($message){
                if(!in_array($message, $_SESSION['msg'])){
                    $_SESSION['msg'][]  = $message;
                }
            }

            public function getText(){
                return "Some Logic for getting Message";
            }
        }
        ?>


        <?php
            // INSIDE OF YOUR VIEW SCRIPT; AT THE VERY TOP, ENABLE SESSION AS WELL:

            //FIRST CHECK IF SESSION EXIST BEFORE STARTING IT:
            if (session_status() == PHP_SESSION_NONE  || session_id() == '') {
                session_start();
            }

            // THEN LOOP THROUGH THE SESSION DATA FOR MESSAGES TO BE DISPLAYED
            $msg    = new Message();
            if(isset($_SESSION['msg'])) {
                foreach ($_SESSION ["msg"] as $msg) :
                    echo $msg->getText();
                endforeach;

                unset ($_SESSION ["msg"]);
            }