Это не дубликат этого Передача переменной из одного файла включения php в другой: глобальный или нет
Я пытаюсь сделать простой php-проект, в котором у меня есть другой файл для подключения к БД (config.php), функции БД (db_functions.php), обычные функции (functions.php) и индексный файл (index.php).
У меня настроено соединение с БД в config.php -
$link = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die(mysqli_error());
Это соединение работает правильно (проверено на index.php). DB_HOST и другие константы объявлены в файле config.php. Теперь у меня есть файлы php, подключенные следующим образом:
functions.php требуется (с использованием require) в index.php
db_functions.php требуется (используя require) в functions.php
config.php требуется (с использованием require) в db_functions.php
Теперь, если я хочу использовать переменную $link
в db_functions.php, это не сработает. Показывает уведомление Undefined variable: link in db_functions.php on line 10
.
Я вызываю $link
в функции на db_functions.php. Объявление global $link
один раз на db_functions.php тоже не работает. Я должен объявить global $link
в каждой функции в db_functions.php. Это раздражает, есть ли способ не использовать его так много раз? Или обойти, даже не объявляя глобальный?
заранее спасибо
То, что сказал Тим, верно, еще один подход без реализации ООП - это использование суперглобального $GLOBAL
бывший.
$GLOBALS['link']
ссылка: https://www.php.net/manual/en/reserved.variables.globals.php
Хотя это не тот ответ, который я искал, но поскольку в PHP нет другого варианта, я должен использовать ООП или $GLOBALS['link']
да, вы должны использовать ключевое слово GLOBAL в каждой функции, вот как это работает, в противном случае проанализируйте переменную $link для каждой функции в качестве аргумента или рассмотрите парадигму ООП