PHP паттерн Registry

Шаблон проектирования «Registry» или «Реестр» представляет собой что то вроде массива, доступного на всех уровнях приложения и используется для передачи данных между модулями заменяя глобальные переменные.

Паттерн реализован на статических методах и не требует создания экземпляра класса. Также для упрощения его использования рекомендуется использовать автозагрузку классов.

class Registry
{ 
	private static $_storage = array(); 

	/**
	 * Установка значения.
	 */
	public static function set($key, $value)
	{ 
		return self::$_storage[$key] = $value;
	}

	/**
	 * Получение значения.
	 */
	public static function get($key, $default = null)
	{
		return (isset(self::$_storage[$key])) ? self::$_storage[$key] : $default;
	}

	/**
	 * Удаление.
	 */
	public static function remove($key)
	{
		unset(self::$_storage[$key]); 
		return true;
	}

	/**
	 * Очистка.
	 */
	public static function clean()
	{
		self::$_storage = array(); 
		return true;
	}
}
PHP

Использование

В одной части сайта, например в контроллере, устанавливается значение:

Registry::set('sid', 'xxxxxx');
PHP

В другой, например в шаблоне, это значение выводится:

echo Registry::get('sid');
PHP
23.12.2017, обновлено 15.10.2019
Предыдущая запись Автозагрузка классов
Следующая запись Обработка изображений в PHP

Комментарии 1

Дмитрий Соболев Дмитрий Соболев
10 апреля 2020 в 05:36
+1
public static function addToValueAfter($key, $value)
{
return self::$_storage[$key] .= $value;
}
public static function addToValueBefore($key, $value)
{
return self::$_storage[$key] = self::$_storage[$key] . $value;
}

, чтобы добавить комментарий.

Другие публикации

В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
38847
-1
Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.
21462
+4
Для предотвращения XSS, SQL-инъекций и других атак, данные полученные из форм нужно чистить. Простое экранирования кавычек не достаточно, нужен комплексный подход по типу данных.
2497
+5
AJAX позволяет отправить и получить данные без перезагрузки страницы. Например, делать проверку форм, подгружать контент и т.д. А функции JQuery значительно упрощают работу.
49096
+9
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
8379
+5
В случаях, когда нужно вывести большой PHP-массив постранично, без использования баз данных.
2056
+2