【问题标题】:PHP 'Call to undefined function' across two different includes?PHP'调用未定义的函数'跨越两个不同的包括?
【发布时间】:2018-02-23 06:21:10
【问题描述】:

我有四个 PHP 文件,它们将为我的网站构成一个简单的模板:
- functions.php(包含网站的所有主要功能 - 巨大的文件)
- index.php(我将使用的主模板文件,它将把其他三个文件放在一起)
- header.php(网站标题)
- footer.php(网站的页脚 - 这是出现问题的地方

functions.php - 一个 sn-p。这个函数只是独立的,而不是在一个类或任何东西里面。

<?php
function LandingPageURL($Phrase, $LPID){
$LandingPageURL = "https://www.website.com/" . trim(strtolower(str_replace("d'","",str_replace(" ", "-", $Phrase)))) . "-" . trim($LPID) . "/";
}
?>

header.php - 没有相关部分。但是,我可以从这里很好地使用 functions.php 文件中的函数。

footer.php - 包括相关部分。第 27 行出现错误。

echo '<li><a href="' . LandingPageURL($ar_CHANNELS[$ar_CHANNELS_POS][$v_CH_PHRASE],$ar_CHANNELS[$ar_CHANNELS_POS][$v_CH_LPID])

$ar_CHANNELS* 变量只是我拥有的数组中的值。

index.php - 包括相关部分。
这包含在文件的顶部:

<?php
require ($_SERVER['DOCUMENT_ROOT'] . "/" . "resources/nw/lib/includes/functions.php");
?>

这绝对有效,因为我从functions.php 调用其他变量,这是成功的。
在文件的下方,我首先包含 header.php 文件,然后以相同的方式包含 footer.php 文件:

require ($_SERVER['DOCUMENT_ROOT'] . "/" . "page/page-elements/header.php");
require ($_SERVER['DOCUMENT_ROOT'] . "/" . "page/page-elements/footer.php");

当包含 footer.php 并加载网页时,我收到错误消息:

致命错误:在第 27 行调用 C:\Hosting\website\httpdocs\page\page-elements\footer.php 中未定义的函数 LandingPageURL()

是我做错了什么,从包含在我的主 index.php 文件中的另一个文件调用函数吗?我确保使用'require',这样我就知道functions.php被拉入index.php。

【问题讨论】:

  • @Error404 - 我没有包括在内,因为它不相关,并且不想让帖子变得比现在大
  • footer.php 文件包含在 index.php 文件中,该文件已经包含了 functions.php。如果我将functions.php添加到footer.php,它会抛出一个关于已经声明的函数的错误。
  • @Cawley 您能否创建一个最小的、完整的可验证示例,在该示例中发生错误?删除所有不相关的代码,或创建 3 个包含仅包含打印语句的函数的文件
  • 标签: php html


    【解决方案1】:

    比较尴尬的是,整个问题是由于没有正确关闭前面的函数造成的。

    【讨论】:

      【解决方案2】:

      functipns.php 文件必须包含在 footer.php 中,如果您想在其中使用它的功能。

      【讨论】:

      • "这绝对有效,因为我正在从functions.php中调用其他变量,这是成功的。"
      • 如果它适用于其他功能,只需复制一个正在运行的功能并将其逐行转换为您想要的功能并报告错误发生在哪个步骤
      • 还有什么建议吗?我可以使用 header.php 文件中的函数,该文件也包含在 index.php 文件中
      猜你喜欢
      相关资源
      最近更新 更多
      热门标签