0

我正在尝试将 CI 引入遗留应用程序,但想使用一些已经存在于 CI 外部的全局变量。我一直在将它们加载到 /CI/config/config.php 并在视图中使用它来获取它们:

$this->config->item('myvar');

这很好用。但是,如果我在名为 sidebar.php 的模型中包含我的侧边栏,它想要访问存储在 globals.php 中的全局变量,它们会出现未定义的情况。请注意,sidebar.php 使用 include 语句从 globals.php 访问全局变量。此外,全局变量在 globals.php 中定义如下: $myvar = "bla";

globals.php 和 sidebar.php 在 CI 之外。这两个文件不需要执行功能。

有谁知道允许 CI 及其包含的文件访问其外部的全局变量的技巧?我不想过多地更改遗留代码。

4

2 回答 2

1

Codeigniter 提供了一个有用的辅助函数来解决这些情况。get_instance() 函数将返回单例对象,以便您可以访问它的许多精彩功能。以下是您如何执行此操作的示例。

$ci =& get_instance();
$ci->config->item('varname');

这是文档。您可以在您的库中使用 CodeIgniter 资源的标题下找到参考资料

于 2013-02-08T16:58:16.057 回答
0

事实证明,我在旧代码无法访问的地方找到了 globals.php 文件的 include_once 语句。遗留代码已经有一个 include_once 语句,但它被忽略了 b/c 它已经包含在其他地方。

如果我打开 testfile.php,我假设它在 CI 中的行为与此类似:

测试文件.php:

include_once("globals.php");

function testf(){
  include("sidebar.php");
}

testf();

边栏.php

include_once("globals.php");

echo $myvar; //fails
于 2013-02-09T00:41:49.660 回答