Php 参数及;职能范围

Php 参数及;职能范围,php,scope,Php,Scope,在PHP中,我有一个关于函数参数及其作用域的问题 我正在构建自己的小模板系统,目前我一直在使用: try { $ret = include("file.php"); if(!$ret) { throw new Exception(); } // Go on here... } catch(Exception $e) { // error handling } 在主文件index.php中大约3-4次。这段代码首先包含所需的文件(由URL中

在PHP中,我有一个关于函数参数及其作用域的问题

我正在构建自己的小模板系统,目前我一直在使用:

try {
    $ret = include("file.php");
    if(!$ret) {
        throw new Exception();
    }
    // Go on here...
}
catch(Exception $e) {
    // error handling
}
在主文件
index.php
中大约3-4次。这段代码首先包含所需的文件(由URL中的GET参数设置),尝试包含它,如果失败,它将处理所有错误。因为这在index.php中使用了3-4次,所以我想用它生成一个函数,这样我就可以轻松地调用
$Template->LoadFile(“filename.php”)
我想这并不难,但是当我这样做的时候,我得到了很多错误消息,因为包含的文件执行所需的变量只在
index.php
的范围内可用(之前执行过代码),而不在
LoadFile()
函数的范围内。我现在能做什么

  • 将所有内容还原并再次愚蠢地使用上述代码3-4次
  • 使用
    $Template->LoadFile($file,$vars),在
    LoadFile()
    中添加所有需要的变量作为参数
    $vars
    是否可在
    LoadFile()
    中用于包含的文件?通过这样做,在某些情况下给定的参数将是巨大的。例如,如果我添加一个自己的板,$vars将包含每个板的数据,这相当多。这难道不会让模板系统变得很慢吗
  • 通过参数添加所需变量作为参考?(与我的第二个建议相同,但发动机减速较小)
  • 使用globals?不

还有什么选择?非常感谢:)

您可以使用option2,但在其他各种方式中,请查看codeigniter和kohana如何呈现他们的视图

你可以这样做

$Template->LoadFile($file,$vars)
其中,$vars是一个
数组
类似
数组('ThisVariableName'=>'ThisVariableValue')


在模板大小的情况下,您可以始终将模板拆分为子模板。

我知道有些人建议不要这样做,但我会在函数中使用全局。我认为
包含
只是一种语言构造,而不是函数本身?你能像那样使用它并让它归还一些东西吗?!是的,你可以像那样使用include。PHP5+。“失败时包含返回值false”。如果包含的文件有return$Data,那么$Var=include($file)时,$Data将返回给$Var;是的,只是测试了一下-thx,但我不确定我是否喜欢这种行为:P
$Template->file($file)
->vars('thisIsVariableName', thisIsVariableValue)
->multi_var(array('thisIsVariableName2' => 'thisIsVariableValue2'))
->render();