我是PHP的新手,遇到了一个小问题。 我有一个名为info.php的php页面,并使用一个名为components.php的包含的php文件来拉取其中包含html代码的函数,然后在page.php(以及其他页面)中使用。我将标题放在一个名为的变量中$ title然后在我的components.php中引用,但由于某种原因,components.php无法识别为标题。这是代码,感谢所有帮助(我知道我对问题的描述很难。如果您需要更多信息,请告诉我)
page.php文件
<?php
include("components.php");
$title = "This is my page Title!";
echo writeHeader();
?>
components.php
<?php
function writeHeader()
{
echo <<<HED
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
HED;
echo $title;
echo <<<HED
</title>
HED;
}
?>
答案 0 :(得分:4)
良好的解决方案:将$title
作为参数传递给他。
不太好的解决方案:将$title
声明为
global $title
在函数内使其属于全局范围。
不将其声明为global
,它是一个全新的变量。
总结评论:
永远不要使用全球!函数/方法所依赖的任何东西都应该作为参数传递。
永远不要访问$ _GLOBALS!同样的原因。
禁用register_globals!不应将GET参数自动注入您的应用程序。
启用最高错误级别!以这种方式编写应用程序,不会打印错误或警告。
不幸的是,my question regarding PHP newbie practices已关闭。但它提供了一些有用的提示。
如果您喜欢,请点击重新打开链接。
答案 1 :(得分:4)
变量具有范围。声明它时,除非它是全局的,否则不能在另一个范围内使用它。为此,您必须使用参数
将其传递给其他范围您的代码应该是这样的:
page.php文件
<?php
include("components.php");
$title = "This is my page Title!";
echo writeHeader($title);
?>
components.php
<?php
function writeHeader($title)
{
echo <<<HED
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
HED;
echo $title;
echo <<<HED
</title>
HED;
}
?>
答案 2 :(得分:1)
在您的代码示例中,您可以在两个位置调用echo函数:
最佳做法是将打印件分组为一个名为“视图”的组件。 如果你的视图是名为component.php的文件,那么你应该删除第一个echo。