帮助include功能

时间:2009-01-17 15:14:00

标签: php function

我试图在PHP中创建一个简单的模板系统。我是PHP的新手,所以没什么大不了的。我有一些问题:

常规包含作品:

$variable = "test";
include("templates/news.html");

但这不会:

这表示$variable未定义:

$variable = "test";
getTemplate("news");

功能:

function getTemplate($tpl) {
    $file = "templates/$tpl.html";
    if (file_exists($file))
        return include($file);
    return false;
}

news.html

<h1>php echo $variable</h1>

该函数有效并包含页面,但它不会写出变量

我将功能包含在所有页面的顶部。

提前致谢!

5 个答案:

答案 0 :(得分:2)

使用extract函数,您可以从数组中定义不同的变量。

你可以这样:

$vars = array('var1' => "value1", 'var2' => "value2");

function getTemplate($tpl, $vars) {
$file = "templates/$tpl.html";

extract($vars, EXTR_SKIP)

if (file_exists($file))
    return include($file);
return false;
}

getTemplate('news', $vars);

在模板中,您可以使用$ var1和$ var2。

答案 1 :(得分:1)

您正试图在函数中访问全局变量。

你必须在函数中声明变量global或者只使用:$ GLOBALS [“variable”]

function () {
global $variable;
etc..
}

答案 2 :(得分:0)

因为您在函数内部包含了该文件,所以该文件的内容不再属于全局范围。

您需要在功能的开头添加global $variable;,或在news.html中使用echo $GLOBALS['variable'];

答案 3 :(得分:0)

我相信你的问题与变量范围有关。调用函数时,除了全局变量(在一秒钟内更多)或传递给函数的变量之外,您无法访问该函数之外的变量。 global函数告诉PHP,您希望在函数中使用与父作用域中相同的变量。您还可以使用define函数为脚本定义常量访问的常量。

使用大量的全局变量是非常不满意的,我建议将关联数组传递给函数,或者使用更面向对象的方法。

希望这有帮助, 雅各布

答案 4 :(得分:0)

您是否考虑过使用Smarty

如果你不想使用这个模板引擎,也许你应该检查它背后的一些想法。简而言之,它通过将变量赋值给对象来处理将变量赋值给模板。如果您将变量分配给模板对象,则可以在模板文件中使用它。