Глобальные переменные 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.
Вот руководство, чтобы объяснить расширение.
Это немного сложно понять, поэтому здесь очень хорошее расширение для использования в среде разработки.
Установите его и следуйте инструкциям, чтобы получить "код скелета". Вам нужно только отредактировать его, чтобы реализовать свою модель.