Если у меня есть структура файла как это:
/
index.php // holds db connection, login information, ...
...
/someSubSite
content_someSite.html // basic structure, texts, forms, ...
styles_someSite.css // styling of content_someSite.html
backend_someSite.php // should send answers of AJAX requests
frontend_someSite.js // sends AJAX requests
// (when a form is submitted)
...
Соединение дб в index.php реализуется через PDO. Так что, очевидно, я не могу напрямую использовать этот db-объект в backend_someSite.php потому что он объявлен и инициализирован в index.php -> Две разные области, нет взаимодействия между этими файлами.
Итак, мой вопрос сейчас: как лучше всего решить эту проблему?
Должен ли я просто создать PDO для каждого php-файла для каждого подузла?
И поделиться информацией для входа в систему, собранной index.php через сессию PHP?
В основном вопрос заключается в следующем: каков наилучший способ обмена информацией или даже целым PDO и другими объектами между index.php а также backend_some (суб) Site.php когда дочерние сайты запрашиваются через AJAX через внешний интерфейс.
Непонятно, что еще есть в index.php. Если это буквально так, как вы описали, вы можете include
это внутри backend_someSite.php
,
Если в нем есть что-то другое, например, что-то, что выводится в браузер, то вы должны создать файл, содержащий ТОЛЬКО такие вещи, как информация о соединении (я бы предложил вызвать его config.php
) и затем включите этот файл (как в index.php, так и в backend_someSite.php)
Может быть, вы можете попробовать поместить код с информацией о соединении в отдельный файл, вызвав его connection.php
<?php
try {
$connection = new PDO('db_driver:host=myhost;dbname=db_name', 'username', 'password');
} catch (PDOException $e) {
die(print ("Error!: " . $e->getMessage()));
}
?>
это всего лишь пример. Тогда ты можешь include
файл в каждом другом .php
который должен подключиться к базе данных и использовать $connection
Переменная там.
вы можете сделать то же самое с проверкой сеанса, если хотите обмениваться информацией о сеансе между сценариями без дублирования кода.
все зависит от вас