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

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

0 голосов
/ 23 марта 2011

Я заметил, что 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'].Так что этот экземпляр класса понадобится другим позже.

1 Ответ

2 голосов
/ 23 марта 2011

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

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

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

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

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

...