Мне было интересно, как лучше всего хранить сообщения для пользователя в PHP. С сообщениями я имею в виду что-то вроде
Аутентификация прошла успешно
или же
Пожалуйста, введите действительный адрес электронной почты
В настоящее время я работаю над проектом, где они хранятся в $_SESSION
переменная, но я не думаю, что это хорошее решение.
Краткое объяснение, как я делаю это в данный момент (Класс Message
был создан мной)
$_SESSION["msg"][] = new Message("...");
а также
foreach ( $_SESSION ["msg"] as $msg ) :
echo $msg->getText();
endforeach;
unset ( $_SESSION ["msg"] );
Это просто упрощенная версия полного кода, но вы должны понять.
РЕДАКТИРОВАТЬ: Забыл сказать, что я работаю с платформой MVC и хочу отделить логику от вывода.
Можно только размышлять о природе / содержании вашего Message
Учебный класс. Тем не менее, здесь; была предпринята попытка смоделировать макет класса с именем Message; также использование в вашем скрипте просмотра было показано ниже класса. Будь уверен что $_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"]);
}
Других решений пока нет …