PHP $ GLOBALS Предложение

Я заметил, что Interspire Shopping Cart инициализирует множество своих классов переменной PHP GLOBALS. Есть ли проблемы с производительностью или безопасностью при выполнении этого?

Ниже приведен поддельный файл, но он написан аналогично файлу Interspire Shopping Cart.

<?php // account.php $GLOBALS['USER_ACCOUNT'] = new USER_ACCOUNT(); $GLOBALS['USER_ACCOUNT']->createPage(); //creating the page ?> 

Я заметил, что в процессе создания страницы (см. Выше) другим файлам, которые будут включены, потребуется доступ к $ GLOBALS ['USER_ACCOUNT']. Таким образом, этот экземпляр класса понадобится другим пользователям позже.

    Есть ли проблемы с производительностью или безопасностью при выполнении этого?

    Нет, но это плохая практика. Хранение данных в глобальном масштабе может быть признаком плохого дизайна. Чрезмерные глобальные переменные – это «запах кода», но я не получаю этого от этого конкретного использования.

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

    Многие другие языки фактически не имеют глобальной возможности для переменных, а это значит, что им придется использовать реестр (или что-то вроде этого). PHP просто помогает сделать что-то не так.

    Использование Registry, а не globals также может облегчить автоматическое тестирование кода.