我遇到了一些麻烦,我制作了一个动态需求函数,我在两个php文件中使用它,在同一个目录中,名为database_controller.php和Login.php。事实是,当我在登录文件中调用require函数时,它在一些测试后告诉我文件存在但是在此测试之后的要求没有取得该文件。 在我的文件database_controller上,当我调用requires函数时,它可以正常工作
需求
的登录文件测试require "./Utils/require.php";
if (file_exists(requires(intval($rows["role"])))) {
echo "exist";
require requires(intval($rows["role"]));
echo "loaded";
//doing something with the dynamic require
}
else {
echo requires(intval($rows["role"]));
exit;
}
当我运行登录时,我收到错误500内部服务器错误,登录文件的响应仅为"存在"
这是./Utils/require.php
的内容/**
* @function requires
* @param $userType
* @return int|string
*/
function requires($userType) {
switch($userType) {
case 0:
if (file_exists("Path to required file for user type 0")) {
return "Path to required file for user type 0";
}
else
return 0;
case 1:
if (file_exists("Path to required file for user type 1")) {
return "Path to required file for user type 1";
}
else
return 0;
case 2:
if (file_exists("Path to required file for user type 2")) {
return "Path to required file for user type 2";
}
else
return 0;
}
}
这是我在具有相同功能的database_controller上所做的事情
require_once "./Utils/require.php";
require_once "./error.php";
/*
* Post request method for packers
*/
if ($UserType == 0) {
if (requires($UserType)) {
require requires($UserType);
//doing something with the dynamic required file
}
}
/*
* Post request method for supervisors
*/
elseif ($UserType == 1) {
if (requires($UserType)) {
require requires($UserType);
//doing something with the dynamic required file
}
}
/*
* Post request method for admins
*/
elseif ($UserType == 2) {
if (requires($UserType)) {
require requires($UserType);
//doing something with the dynamic required file
}
}
这里我没有500内部服务器错误,我有200 ok,我有显示的细节表格
答案 0 :(得分:0)
为什么不使用自动加载功能? https://www.youtube.com/watch?v=VGSerlMoIrY
也许你只需要定义项目根目录的绝对路径。 把它放在一个单独的文件中,并在你的公共index.php
上需要它define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT'] . '/your_project_root' );
然后在你的公共index.php中
require_once'../app/the_config_file.php';
现在,当您动态需要某些内容时,请执行以下操作:
require_once ROOT_PATH . '/path_to_the_file.php';
答案 1 :(得分:0)
我解决了两个具有相同名称的类之间的冲突问题。在login.php上我使用DBLogin类进行连接,并在调用所需文件时使用DBLogin的第二个缩进,因为DBLogin之间对数据库的访问权限不同而不是同一个类