【问题标题】:including a file inside a function在函数中包含文件
【发布时间】:2023-04-06 23:23:01
【问题描述】:

我有一个名为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 函数。

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

header.php - 调用stylesheetURL()

为什么会这样?

编辑: // 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' 它会按预期工作。

【问题讨论】:

  • 你的问题中有很多细节,但不是我们需要帮助解决这个问题的细节。为我们粘贴functions.php文件或确保functions.php文件包含在正确的位置,以便可以从“坏页面”访问它

标签: php function templates include


【解决方案1】:

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

【讨论】:

  • 不敢相信我错过了。干杯,我只是使用了一个我定义为根路径的常量,而不是使用 siteURL 函数来预先包含页眉和页脚。一切正常。可恶!总是小事
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 2013-06-27
  • 2016-04-07
  • 2011-09-24
  • 2012-05-21
相关资源
最近更新 更多