Я знаю, что есть много вопросов, связанных с этим, и я пробовал решения для своей ситуации, но никто из них не работал. Мне нужно изменить API, созданный с помощью FlightPHP Framework (уже написанный). Существует более 100 функций, и большинство из них используют некоторые статические переменные. Я пытаюсь объявить их на одной странице, так что если их значение нужно изменить в один прекрасный день, я могу сделать это легко, изменив его только в одном месте.Неспособность включить файлы в PHP
Это структура каталогов.
index.php
constants.php
FOLDER
- firstInnerPage.php
- secondInnerPage.php
Я приведу образец каждой страницы.
constants.php
<?php
$member_default_cover ='img/members/member-default.jpg';
$member_default_avatar ='img/members/member-default.jpg';
?>
Эти константы, которые я хочу использовать в каждой функции.
index.php
<?php
require 'flight/Flight.php';
//Route to index page function
Flight::route('/indexPageFunction', function()
{
pages_included();
$returnarray=indexPageFunction();
header('Content-type:application/json;charset=utf-8');
echo json_encode($returnarray);
});
//Route to first page function
Flight::route('/firstInnerPageFunction', function()
{
pages_included();
$returnarray=firstInnerPageFunction();
header('Content-type:application/json;charset=utf-8');
echo json_encode($returnarray);
});
//Route to second page function
Flight::route('/secondInnerPageFunction', function()
{
pages_included();
$returnarray=secondInnerPage();
header('Content-type:application/json;charset=utf-8');
echo json_encode($returnarray);
});
Flight::start();
//Calling this function includes the inner page and makes them accessible
function pages_included()
{
require_once 'FOLDER/firstInnerPage.php';
require_once 'FOLDER/secondInnerPage.php';
}
//Index page function
function indexPageFunction()
{
require_once 'constants.php';
$avatar = $member_default_avatar;
}
?>
Для функции страницы индекса, файл получает включен. Когда пользователь помещает запрос, он сначала достигает маршрутов, от которых запрос перенаправляется на правильную функцию. Но внутренние страницы имеют свою собственную функцию. Они написаны на отдельных страницах для категоризации функций. И эти страницы включены в маршрут, поэтому, когда приходит запрос на функцию внутренней страницы, эти файлы включаются. pages_included()
выполняет работу по включению внутренних страниц.
Как выглядит внутренняя страница.
firstInnerPage.php
<?php
function firstInnerPageFunction()
{
require_once 'constants.php';
//require_once '../constants.php';
$avatar = $member_default_avatar;
}
?>
Вторая внутренняя страница также похожи, поэтому, я не включая его здесь.
Я попытался включить этот файл в обоих направлениях: 1) require_once 'constants.php';
2) require_once '../constants.php';
но оба потерпели неудачу. Я либо не могу включить ошибку файла, либо не указан переменная $member_default_avatar
ошибка.
Может ли кто-нибудь сказать мне, какой правильный метод включить файл в таких ситуациях? Благодарю вас.
Я думаю, что 'require_once ('../ constants.php');' должен работать, но только если 'constants.php' работает правильно. Кроме того, я бы не включил другой php-файл внутри функции, он просто выглядит не так. Используйте OOP (объекты) для выделения переменных или поместите свои статические переменные в массив и используйте 'global' внутри функции для доступа к этому массиву. –
Вы включаете константы в эту функцию, также indexPageFunction() вы изменили ее, чтобы потребовать «../constants.php» –
No..in indexPageFunction(), я использую ее как require_once 'constants.php'; и на внутренних страницах как require_once '../constants.php'; @v Sugumar – Annabelle