CodeIgniter在包含外部代码时隐藏非CI全局变量的问题

时间:2013-02-07 19:06:52

标签: php codeigniter scope global-variables codeigniter-2

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

$这 - > config->项( 'MYVAR');

工作正常。但是,如果我在名为sidebar.php的模型中包含我的侧边栏,它想要访问存储在globals.php中的全局变量,那么它们就会变为未定义。请注意,sidebar.php使用include语句从globals.php访问全局变量。此外,全局变量在globals.php中定义如下: $ myvar =“bla”;

globals.php和sidebar.php不在CI之内。这两个文件不需要执行函数。

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

2 个答案:

答案 0 :(得分:1)

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

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

这是documentation。您可以在标题使用库中的CodeIgniter资源

下找到参考文献

答案 1 :(得分:0)

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

如果我打开testfile.php:

,我认为它在CI中的行为类似于CI

<强> testfile.php:

include_once("globals.php");

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

testf();

<强>的sidebar.php

include_once("globals.php");

echo $myvar; //fails