Поиск

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 1580
Предыдущая запись Автозагрузка классов
Следующая запись Обработка изображений в PHP

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

В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
11.11.2017 16366
Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.
29.10.2017 4188
Для предотвращения XSS, SQL-инъекций и других атак, данные полученные из форм нужно чистить. Простое экранирования...
16.08.2019 301
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
26.10.2018 2534
PHP предлагает гибкие настройки вывода ошибок, среди которых функия error_reporting($level) – задает, какие ошибки PHP...
10.10.2019 198
Определить телефон или планшет можно с помощью библиотеки PHP Mobile Detect. Это легкий класс использующий строку...
27.09.2018 1784