Глобальные переменные PHP нулевые внутри функции, если они еще не определены

Прошло несколько лет с тех пор, как я связался с PHP. Но сейчас я пытаюсь выполнить интеграцию сессий phpBB, следуя этому руководству: Интеграция сессий phpBB. Дело в том, что это не сработает, если я не пойду и не определю все глобальные переменные, которые нужны приложению phpBB, потому что они заканчиваются нулевым во время выполнения внутри функций.

Таким образом, код в связанном руководстве работает только тогда, когда я добавляю эту строку кода php над ним:

global $_SID, $auth, $cache, $config, $db, $phpbb_root_path, $phpEx, $SID, $template, $user;

Это не оптимально, поскольку мне придется постоянно обновлять это глобальное объявление каждый раз, когда в глобальную базу phpBB вводится новая глобальная переменная.:(Есть ли какая-то настройка php ini, которую я должен настроить, или что-то еще, чтобы я не объявил об этом?

1 ответ

Решение

Вот как работал PHP:-) Это руководство устарело. Это было опубликовано 8 октября 2007 года. Я согласен с вами, использование глобальной переменной не является оптимальным. У меня нет решения, вы должны объявить их в каждой функции (и защитить ваши переменные). Если бы решения существовали, сообщество использовало бы их. Некоторые участники хотят упаковать их все в супер переменную. Но это было отклонено (слишком опасно, слишком медленно и т. Д.)

Вы все еще используете php3.0? Если вы хотите улучшить качество кода, вам следует обновить свой форум до версии 3.2. Новая система (с использованием расширений) очень хороша и основана на Dependancy Injection Symfony.

Вот руководство, чтобы объяснить расширение.

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

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

Другие вопросы по тегам