包括函数内部的文件


including a file inside a function

我有一个名为get_header()的函数,它将头文件包含在一个模板中(有点像wordpress),该模板正在工作。在我的函数文件中还定义了一个stylesheetURL()函数,它获取模板的样式表url。

在我的header.php文件(在"design"子目录中)中,我调用stylesheetURL,php说它是未定义的。

这就是结构:

pagehandler.php-处理页面请求。包括"load.php"answers"design/page.php"

load.php-包括"functions.php"和类。

functions.php-包含get_header和stylesheetURL等过程函数。get_header实际上包括作为绝对url的header.php文件(http://website.com/design/header.php)在函数内部,但是因为函数没有作用域,所以它仍然应该调用stylesheeturl函数fine。

page.php-调用函数get_header(),echos内容,然后调用get_footer()

header.php-调用stylesheetURL()<lt;这就是它断裂的地方。头文件包含得很好,但不能访问任何函数。

为什么会发生这种情况?

编辑://settings是一个全局数组,如果从除header.php或footer.php之外的任何文件调用,siteURL会很好地显示url。

    function siteURL() {
    global $settings;
    return $settings['site_url'];
}
function designURL() {
    $siteurl = siteURL();
    return $siteurl.'/design';
}
function stylesheetURL() {
    $durl = designURL();
    return $durl.'/style.css';
}
function get_header() {
    $durl = designURL();
    require $durl.'/header.php';
}

事实上,如果我从get_header()更改为include 'header.php',它将按预期工作。

我想这是因为,你不能通过url要求文件。你需要一个路径,而不是一个url来需要一个文件。如果您在php.ini中设置了远程文件包含,则Include正在工作。