解释 $CI =& get_instance();

2022-08-30 07:57:18

浏览代码的源代码,

在其帮助器函数中,我不断看到代码,任何人都可以向我解释一下此代码的工作原理吗?$CI =& get_instance();

我得到它返回对$CI超级对象的引用,但是从哪里来?get_instance()


答案 1

它基本上是一个单例设计模式,它使用函数而不是静态方法。

要深入了解,请查看源代码

所以基本上,它不强制执行单例,但它是公共功能的捷径......

编辑:实际上,现在我明白了。对于 PHP4 兼容性,他们必须执行双全局变量 hack 才能使其正确返回引用。否则,引用将全部搞砸。由于PHP4不支持静态方法(好吧,无论如何都是正确的),因此使用该函数是更好的方法。因此,由于遗留原因,它仍然存在...

因此,如果您的应用程序只是PHP5,那么这样做应该没有什么问题,它是相同的......CI_Base::get_instance();


答案 2

get_instance() 是 CodeIgniter 核心文件中定义的函数。当您处于超级对象之外的作用域中时,您可以使用它来获取对 CodeIgniter 超级对象的单例引用。

我很确定它是在base.php或类似的东西中定义的。


推荐