2012-04-19 3 views
0

Я уменьшил свои глобальные значения только до одного. Кажется немного странным, чтобы вводить класс только с одной переменной и функцией getter, но я не хочу никаких неявных зависимостей, я хочу, чтобы все они были явными и документированными. Также я хочу, чтобы «глобалы» были доступны для классов, к которым я предоставляю доступ. Поэтому в некотором смысле они не являются глобальными. Необходимо переименовать для совместного использования. LOAD_ON - единственная переменная, которая мне нужна в нескольких классах.Только одна «глобальная» переменная - правильная реализация?

Правильно ли это (передовая практика) для реализации «глобальной» переменной при попытке придерживаться SOLID/DRY (не повторяйте себя)/ООП (объектно-ориентированное программирование).

+0

вы используете что-то вроде реестра шаблон проектирования, чтобы обойти с помощью $ GLOBALS? – Hajo

+0

Ответ здесь указывает, что это в правильном направлении -> http://stackoverflow.com/questions/1151341/registry-design-pattern-good-or-bad –

ответ

1

Если у вас есть только 1 'глобальный' и его не нужно менять, константы - лучшая практика.

define('LOAD_ON', 0); 

Используйте его таким образом

if(LOAD_ON === 0){ 
///... 
+0

Да, и ваш класс тоже. Я мог бы просто использовать $ gc = new GlobalClass(); – LHolleman

+0

Шаблон реестра обеспечивает инкапсуляцию ... так что теперь это будет новый Shared(); ... где Shared реализует этот шаблон .... 0 Globals ... может показаться чрезмерно спроектированным ... но для согласованности я собираюсь использовать его. –

Смежные вопросы