HTML模板中无法访问PHP变量

时间:2013-05-20 18:53:18

标签: php html function templates variables

的index.php

<?php 
$title = "World";
echo loadTemplate();
?>

的template.php

<?php
function loadTemplate(){
    return <<<EOF
    Hello {$title}
    EOF;
}
?>

在运行 index.php 时,它应输出Hello World,但仅打印Hello。如何让我的脚本回显Hello World

3 个答案:

答案 0 :(得分:3)

每当你想在函数中使用全局变量时,你需要声明它,使用global关键字将它带入范围:

function loadTemplate() {
  global $title;
  return <<<EOF
    Hello {$title}
    EOF;
}

答案 1 :(得分:1)

请参阅globals

  

此脚本不会产生任何输出,因为heredoc引用$title变量的本地版本,并且尚未在此范围内分配值。

您需要告诉PHP您希望将$title用作全局。

function loadTemplate(){
    global $title;
    return <<<EOF
    Hello {$title}
    EOF;
}

或者,这是优选的,因为全局变得混乱,将其作为参数传递:

function loadTemplate($what){
    global $title;
    return <<<EOF
    Hello {$what}
    EOF;
}

echo loadTemplate($title);

答案 2 :(得分:0)

使用global s是非常草率和糟糕的做法。它显示了一个懒惰的开发人员,当你再回到它一段时间后,你不会知道$title是什么。

$title = "World";
echo loadTemplate($title);

function load_template($title)
{
    return <<<EOF
Hello, {$title}
EOF;
}

有关详细信息,请查看variable scope

注意:您的原始代码不正确,您的案例中的结束标识符EOF无法缩进。