Задать вопрос

Где хранить глобальные переменные?

Где, с точки зрения грамотной архитектуры, хранить глобальные переменные?



Ради большей чёткости вопроса, опишу остальные условия задачи, хотя многие наверное по умолчанию бы их подразумевали. Остальные условия такие:

* ООП;

* в первую очередь, интересует специфика web-приложений построенных согласно MVC-архитектуре.



Пример кода на PHP:



class Registry<br>
{<br>
	private static $_data = array();<br><br>
	/**<br>
	 * Установить переменную<br>
	 * @return true/false<br>
	 */<br>
	public static function set($key, $value)<br>
	{<br>
		if(array_key_exists($key,self::$_data)){<br>
			return false;<br>
		}<br>
		self::$_data[$key] = $value;<br>
		return true;<br>
	}<br><br>
	/**<br>
	 * Получить переменную<br>
	 * @return value/null<br>
	 */<br>
	public static function get($key)<br>
	{<br>
		if( !array_key_exists($key, self::$_data) ){<br>
			return null;<br>
		}<br>
		return self::$_data[$key];<br>
	}<br><br>
	/**<br>
	 * Удалить переменную<br>
	 */<br>
	public static function delete($key)<br>
	{<br>
		unset(self::$_data[$key]);<br>
	}<br>
}




Будет ли такой вариант хорошим?

Может есть способ проще и изящней?

Может можно вовсе обойтись без глобальных переменных?

Прошу делиться опытом.
  • Вопрос задан
  • 9263 просмотра
Подписаться 4 Оценить Комментировать
Решения вопроса 1
@tikhop
«Может можно вовсе обойтись без глобальных переменных?» — этот вопрос надо задавать себе лично.

А так, у тебя есть главная модель, которая хранит какое либо свойство. В свою очередь каждая вьюха и главный контроллер имеют ссылку на данную модель, тем самым имеют и доступ к нужному свойству модели.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
savostin
@savostin
Еще один программист
Мой внутренний голос подсказывает, что наличие глобальных переменных означает недостаточно продуманную архитектуру приложения. Т.е. каждая переменная имеет свой смысл и должна принадлежать тому классу, которому принадлежит смысл этой переменной.
Ответ написан
А зачем собственно вам нужны глобальные переменные?
Ответ написан
Комментировать
@oandrew
Глобальные переменные не нужны. Если нужны экземпляры обьектов — используйте Singleton паттерн. А в других всех случаях вероятней всего просто неправильная архитектура.
Ответ написан
@Disturbed
Dependency injection ?!
Ответ написан
Chvanikoff
@Chvanikoff
А Вы можете привести пример, когда Вам действительно могут понадобиться глобальные, внутри приложения, переменные?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы