Стоит ли пользоваться супер глобальными переменными?
Всем привет! Часто нужно сделать такой модуль как "хлебные крошки", который затрагивает чуть не все файлы скрипта. Подойдет для сбора данных супер глобальный массив $GLOBALS, чтобы собрать в переменную всю цепочку открытых ссылок?
Спрашиваю потому, что нbult не встречал использование этого супер глобального массива.
UPD:
т.е., есть файл index.php, который определяет модуль к которому обратились и подключает нужный файл (возьмем для примера вывод новостей), в index.php подключается файл news.php, в подключенном берем из базы название новости и название категории и кидаем одно и другое в $GLOBALS['speedbar'][]. А в конце index.php уже выводим содержимое глобального массива в порядке $GLOBALS['speedbar'][0] >> $GLOBALS['speedbar'][1] >> $GLOBALS['speedbar'][2]
И получаем "главная >> категория >> новость"
Sayonji: отсюда второй вопрос возник... Подключая класс в главном файле скажем index.php и создавая экземпляр класса в нём, я всегда могу быть уверен, что смогу обратиться к этому классу из любого файла, который подключен к index.php или из любого класса? Или придется подключать "класс хлебные крошки", в каждом ином классе, где нужно его использовать... скажем, указать название статьи
Евгений: Да, подключение файлов в php работает практически как прямая вставка кода: если в скрипте объявлено что-то (переменная, класс, функция...), то это что-то будет доступно во вставленных файлах. Однако в данной случае вам не нужен экземпляр, делайте значения статическими.
Да. Это такой же инструмент языка, как и все остальные.
И да, это усилит зависимости частей программы друг от друга. Просто используйте такие переменные очевидным образом, в начале блока кода, чтобы не прятать их и при поддержке кода не спотыкаться о них.
т.е., есть файл index.php, который определяет модуль к которому обратились и подключает нужный файл (возьмем для примера вывод новостей), в index.php подключается файл news.php, в подключенном берем из базы название новости и название категории и кидаем одно и другое в $GLOBALS['speedbar'][]. А в конце index.php уже выводим содержимое глобального массива в порядке $GLOBALS['speedbar'][0] >> $GLOBALS['speedbar'][1] >> $GLOBALS['speedbar'][2]
И получаем "главная >> категория >> новость"
Это не верный подход, я правильно понял?
Игорь Седов дело говорит. Когда у вас небольшой проект, самописный проект, куда вы и только вы пишите код, то все по определению под вашим контролем. И вы не будете каверкать переменные, переопределять и уничтожать их случайно. Тут можно хоть всё на глобальных переменных, лишь бы результат кода вас устраивал, лишь бы программа выполняла требуемое.
А когда разработчиков несколько, когда вы подключаете в код чужой код, то важно исключить даже случайное влияние. И тут все средства хороши.
Это как на стройке: ремонт у себя в квартире вы будете делать без каски и по простому плану, а на стройке многоквартирного дома, где куча рабочих, и каска нужна, чтоб от кого-нить сверху кирпич не прилетел, и проект в нескольких томах нужен.
Хотите сделать, чтобы работало - не брезгуйте суперглобальными переменными, а хотите сделать красиво/академически/масштабно или для коллективной разработки - это про максимальную изоляцию переменных.
SergeyNN: Спасибо! Решил таки использовать суперглобальный массив. Проект полностью самописный и полностью под моим контролем. Нету получается смысла тратить время на разработку хитроумной системы, когда ковыряться в коде буду только я.