0

我在 PHP 中有一个与函数参数及其范围有关的问题。

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

try {
    $ret = include("file.php");
    if(!$ret) {
        throw new Exception();
    }
    // Go on here...
}
catch(Exception $e) {
    // error handling
}

在 mainfile 中大约 3-4 次index.php。此代码首先包含所需的文件(由 URL 中的 GET 参数设置),尝试包含它,如果失败,它会处理所有错误。由于这在 index.php 中使用了 3-4 次,我想用它制作一个函数,这样我就可以轻松调用$Template->LoadFile("filename.php");,这个函数为我处理所有事情:包括执行代码和错误处理。

我想并不难,但是这样做时我会收到很多错误消息,因为包含的文件执行所需的变量仅在index.php(之前执行代码的位置)范围内可用,而不在LoadFile()功能。我现在能做什么?

  • 恢复一切,然后愚蠢地重复使用上面的代码 3-4 次?
  • 将所有需要的变量添加LoadFile()为参数,以便通过 using$Template->LoadFile($file,$vars); $vars可用于LoadFile()包含的文件?通过这样做,在某些情况下给定的参数会很大。例如,如果我添加一个自己的板,$vars 将包含每个板数据,仅此而已。这不会让模板系统变得很慢吗?
  • 通过参数添加所需的变量作为参考?(与我的第二个建议相同,但发动机减速较少)。
  • 使用全局变量?不!

还有哪些选择?非常感谢 :)

4

1 回答 1

0

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

你可以做类似的事情

$Template->LoadFile($file, $vars) $vars 是一个array类似的地方array('thisIsVariableName' => 'thisIsVariableValue')

或者

$Template->file($file)
->vars('thisIsVariableName', thisIsVariableValue)
->multi_var(array('thisIsVariableName2' => 'thisIsVariableValue2'))
->render();

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

于 2013-03-18T13:10:36.563 回答