PHP“调用未定义的函数”跨越两个不同的包含?

时间:2017-09-14 10:03:35

标签: php html

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

functions.php - 一个片段。这个函数只是单独使用,而不是在类或任何内容中。

<?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。

2 个答案:

答案 0 :(得分:0)

相当令人尴尬的是,整个问题是由于没有正确关闭前面的函数引起的。

答案 1 :(得分:-1)

functipns.php文件必须包含在footer.php内,如果你想在那里使用它的功能。