Можно ли использовать global в php?

Здравствуйте, кто знает можно ли использовать (Поразумеваеться целесообразность и безопасность) Ключевое слово global в php.

Например у меня есть обьект класса $app
И что бы сделать его доступном в другом классе, не наследуя его полностью, написать:

class Test{
  public function metod(){
   global $app;
    $app->save();
}

}


Чем это черевато? Нормальная это практика или нет?
  • Вопрос задан
  • 5798 просмотров
Решения вопроса 1
@IceJOKER
Web/Android developer
везде один и тот же ответ - использование GLOBAL в php - ЭТО НЕ ЕСТЬ ГУД

Геттер к пример можно использовать, чтоб в другом месте получить и всякие другие варианты..

Безопасная альтернатива для global vars php - stackoverflow.com/questions/7290993/safe-alternati...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
socengel
@socengel
7 лет native php в продакшене, онлайн 20000+,
class Test
{
    public function __construct( & $app )
    {
        $this->app = $app;
    }

}

$test = new Test( $app );


Вот такой код еще куда ни шло но и он я бы сказал не очень хорош.

Использовать global можно только в конструкторе класса чтобы присвоить внутренним полям класса глобальные значения. При условии что эти глобальные переменные не объекты, и создаются кодом который находится в большой зависимости, например в index.php на котором 5 лет группа программистов писала код. Естественно поменять такие переменные не всегда возможно (ввиду необходимости глобального рефакторинга). Либо когда это "псевдоконстанты" как я их называю, когда переменной присваивается значение и оно не меняется на протяжении всего выполнения скрипта. В любом другом случае это крайне не рекомендуется.

Если следовать этому правилу (которое я придумал сам) то в принципе ничего страшного случится не может.
А вообще лучше всетаки посмотреть в сторону Dependency injection.
Ответ написан
Ваш ответ на вопрос

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

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