Я заметил, что 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 также может облегчить автоматическое тестирование кода.