Я использую 2 основных файла PHP для скриптов на своем веб-сайте. Это основное внимание уделяется доступу к данным из базы данных MySQL и к тех, которые содержат функции, необходимые для веб-сайта. В некоторых функциях (в файле функций) мне нужно вызвать функции из моего файла MySQL. Я не понимаю, как правильно требовать файлы, чтобы они могли использоваться, когда они необходимы.Как правильно требовать файлы PHP
include 'scripts/MySQL.php';
include 'scripts/functions.php';
В верхней части страницы (я использую функции непосредственно из обоих файлов). Тогда, когда мне нужно использовать функции MySQL в functions.php
, функции MySQL равны нулю, если я не требую MySQL.php
в верхней части файла functions.php
, но если да, то я получаю эту ошибку: Fatal error: Cannot redeclare getUserInfo() (previously declared in .../scripts/MySQL.php:2) in .../scripts/MySQL.php on line 16
. Это GetUserInfo (строка 2 является первой линией размещена, и линия 16 является последней):
function getUserInfo($steamID) {
$link = mysqli_connect(constant('DB_SERVER'), constant('DB_USER'), constant('DB_PASS'), constant('DB_NAME'));
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = 'SELECT * FROM '.constant('membersTable').' WHERE steamID = '.$steamID;
if($result = mysqli_query($link, $query)) {
return mysqli_fetch_assoc($result);
}
}
Как require
действительно работает с зависимостями между файлами? И почему мой код действует так странно/как его исправить?
Кроме того, если я хочу получить доступ к переменным из другого файла, должен ли я потребовать этот файл в каждой функции, использующей переменные, или я могу потребовать ее в верхней части файла, содержащего функции (последний не похоже, работают)?
Извините, если этот вопрос немного запутан. Я действительно не мог понять, как правильно описать мою проблему (особенно потому, что я не уверен, что сам понимаю проблему).
Включаете ли вы файл из любого другого файла? Кажется, что вы включаете файлы более одного раза. Можете ли вы предоставить полный код? – Mindastic
вы включили Mysql.php дважды, так как функции.php нуждается в доступе к нему, но это приводит к фатальной ошибке. Ответ, поставленный FuzzyTree 'require_once', должен исправить это. –
Просто следуйте PSR-0, и вы будете в безопасности. – vinnylinux