包括函数内的文件

时间:2012-07-24 10:22:34

标签: php function templates include

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

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

这是结构:

pagehandler.php - 处理页面请求。包括'load.php'然后'design / page.php'

load.php - 包含'functions.php'和类。

functions.php - 包含像get_header和stylesheetURL这样的过程函数。 get_header实际上包含了header.php文件作为函数内部的绝对URL(http://website.com/design/header.php),但由于函数没有作用域,它仍然应该调用stylesheeturl函数。< / p>

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

header.php - 调用stylesheetURL()。 &LT;&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',它会按预期工作。

1 个答案:

答案 0 :(得分:0)

我想这是因为,你不能通过网址要求文件。您需要一个路径,而不是需要文件的URL。如果您在php.ini中设置了远程文件包含,则包含正在运行。