首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数的参数和作用域

函数的参数和作用域
EN

Stack Overflow用户
提问于 2013-03-18 13:00:34
回答 1查看 56关注 0票数 0

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

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

代码语言:javascript
复制
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次?
  • LoadFile()中添加所有需要的变量作为参数,所以通过使用$Template->LoadFile($file,$vars);$vars可以在包含的文件的LoadFile()中使用吗?这样做,在某些情况下,给定的参数将是巨大的。例如,如果我添加一个自己的板,$vars将包含每个板的数据,这是相当多的。这样的话,模板系统就不会变得很慢吗?
  • 通过参数添加所需的变量作为参考?(与我的第二个建议一样,但发动机减速较少)。
  • 用球体?不是的!

还有其他的选择吗?非常感谢:)

EN

回答 1

Stack Overflow用户

发布于 2013-03-18 13:10:36

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

你可以做这样的事

$Template->LoadFile($file, $vars),$vars是类似于array('thisIsVariableName' => 'thisIsVariableValue')array

代码语言:javascript
复制
$Template->file($file)
->vars('thisIsVariableName', thisIsVariableValue)
->multi_var(array('thisIsVariableName2' => 'thisIsVariableValue2'))
->render();

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15477463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档