Я ищу "лучший метод" для создания системы сообщений / уведомлений. Я использую подход на основе ООП для скрипта и хотел бы сделать что-то вроде этого:
if(!$something)
$messages->add('Something doesn\'t exist!');
Метод add () в классе сообщений выглядит примерно так:
class messages {
public function add($new) {
$messages = $THIS_IS_WHAT_IM_LOOKING_FOR; //array
$messages[] = $new;
$THIS_IS_WHAT_IM_LOOKING_FOR = $messages;
}
}
В конце концов, есть метод, в котором считывается $ messages и возвращается каждое сообщение в виде красиво отформатированного HTML.
Итак, вопрос в том - какой тип переменной я должен использовать для $THIS_IS_WHAT_IM_LOOKING_FOR
?
- Я не хочу, чтобы это использовало базу данных. Запрос к БД каждый раз только для некоторых сообщений, которые появляются во время выполнения и исчезают через 5 секунд, кажется излишним.
- Использование глобальных констант для этого, по-видимому, является наихудшей практикой, поскольку константы не должны быть переменными, которые меняются со временем. Я даже не знаю, сработает ли это.
- Я не хочу всегда передавать и возвращать существующий массив
$messages
через метод каждый раз, когда я хочу добавить новое сообщение.
- Я даже пытался использовать сеансовую переменную для этого, но это явно не подходит для этой цели вообще (загрузка страницы всегда будет слишком поздно).
Есть предложения?
Спасибо!
РЕДАКТИРОВАТЬ: Добавлено после того, как я вызвал некоторую путаницу с выше ...
Массив $messages
должен быть глобальным: мне нужно иметь возможность добавлять к нему различные классы, а также на верхнем уровне всего сценария.
Лучшее сравнение, которое приходит на ум, - это использовать базу данных для хранения всех сообщений, которые появляются во время выполнения, а когда наступает время вывода, запрашивать базу данных и выводить каждое сообщение. Исключением из этого сравнения является только то, что время жизни массива $ messages является загрузкой страницы (они накапливаются во время загрузки страницы и исчезают сразу после этого).
Так, например, скажем, у меня есть 10 различных действий, выполняемых одно за другим в сценарии. Каждое из этих действий использует другой класс. Каждый из этих классов должен иметь возможность отправлять на $messages->add()
. После выполнения всех 10 действий наступает «время вывода», и массив $ messages может содержать до 10 различных сообщений, которые были добавлены через все различные классы.
Надеюсь, это немного прояснит.