Php 包含与URL脚本名称同名的文件

Php 包含与URL脚本名称同名的文件,php,include,require,Php,Include,Require,当我包含一个位于子目录中的文件时,我得到了一个奇怪的结果。当我试图包含一个与第一个调用方文件同名的文件时,URL中会显示相同的.php文件,它不包含任何内容/空白/无操作。不知道到底发生了什么。 但是,当我更改所需的文件名时,它可以正常工作 我曾试图要求_提供一个名为import.php的文件,该文件位于view/parts/import.php下的子目录中,但什么都没有发生,甚至没有出现错误。但当我将其名称更改为view/parts/v_import.php时,它成功地满足了要求 下面是一个场

当我包含一个位于子目录中的文件时,我得到了一个奇怪的结果。当我试图包含一个与第一个调用方文件同名的文件时,URL中会显示相同的.php文件,它不包含任何内容/空白/无操作。不知道到底发生了什么。 但是,当我更改所需的文件名时,它可以正常工作

我曾试图要求_提供一个名为import.php的文件,该文件位于view/parts/import.php下的子目录中,但什么都没有发生,甚至没有出现错误。但当我将其名称更改为view/parts/v_import.php时,它成功地满足了要求

下面是一个场景

这是我的项目结构:

在import.php中,我声明类_view.php,它负责调用视图文件

在import.php中

它将启动一系列事件来构建页面结构标头、正文 ,页脚等,并将设置所需的模板名称

在class_view.php-view函数中:

机构代码:

在body.php中,您将发现以下代码:

    if (isset($data)) {
        foreach ($data as $value) {
            require_once $value;
        }
    } else {
        echo "No data!";
    }

运行xampp1.8.3[PHP:5.5.15]

使用require而不是require\u一次是否有效?我没有想到这一点。嗯,是的,奇怪的是,它似乎试图将其自身包含在URL中调用的相同脚本中:/I出现致命错误:无法重新声明class_系统,这意味着它正在调用主外部文件。$tpl的值是多少?您确定它包含目录前缀吗?在viewimport中传递的导入,view仅在调用build_view$tpl之前进行验证。如果您只提供一个文件名,它将首先在当前目录中查找,并且仅在未找到时才使用搜索路径。
private function build_view($tpl)
{
    require_once "parts/header.php";
    require_once "parts/nav.php";
    $data[] = $tpl . ".php";
    require_once "parts/body.php";
}
    if (isset($data)) {
        foreach ($data as $value) {
            require_once $value;
        }
    } else {
        echo "No data!";
    }