索引.php
<?php
$title = "World";
echo loadTemplate();
?>
模板.php
<?php
function loadTemplate(){
return <<<EOF
Hello {$title}
EOF;
}
?>
在运行index.php时,它应该输出Hello World
但它只打印Hello
。如何使我的脚本回显Hello World
?
每当您想在函数中使用全局变量时,都需要声明它,使用global
关键字将其带入范围:
function loadTemplate() {
global $title;
return <<<EOF
Hello {$title}
EOF;
}
见全局:
此脚本不会产生任何输出,因为 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);
使用 s 是非常草率和不好的做法global
。它显示了一个懒惰的开发人员,当您稍后再看它时,您将不知道是什么$title
。
$title = "World";
echo loadTemplate($title);
function load_template($title)
{
return <<<EOF
Hello, {$title}
EOF;
}
有关更多信息,您应该查看变量范围。
注意:您的原始代码不正确,EOF
在您的情况下,关闭标识符不能缩进。