Невозможно передать переменную из другого файла php

Это не дубликат этого Передача переменной из одного файла включения 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, подключенные следующим образом:

  1. functions.php требуется (с использованием require) в index.php

  2. db_functions.php требуется (используя require) в functions.php

  3. 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 в каждой функции, вот как это работает, в противном случае проанализируйте переменную $link для каждой функции в качестве аргумента или рассмотрите парадигму ООП

user10051234 10.04.2019 05:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

То, что сказал Тим, верно, еще один подход без реализации ООП - это использование суперглобального $GLOBAL

бывший. $GLOBALS['link']

ссылка: https://www.php.net/manual/en/reserved.variables.globals.php

Хотя это не тот ответ, который я искал, но поскольку в PHP нет другого варианта, я должен использовать ООП или $GLOBALS['link']

b0xed 10.04.2019 05:59

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