当前位置: 首页 > 面试题库 >

解释$ CI =&get_instance();

楮自珍
2023-03-14
问题内容

查看codeigniter的源代码,

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

我知道它正在返回对$ CI超级对象的引用,但是它get_instance()来自哪里呢?


问题答案:

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

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

因此,基本上,它不强制执行单例,但这是公共函数的捷径…

编辑:
其实,现在我明白了。为了与PHP4兼容,他们必须进行双重全局变量破解才能使其正确返回引用。否则,引用将被搞砸。而且由于PHP4不支持静态方法(无论如何,还是正确的),所以使用函数是更好的方法。因此由于遗留原因它仍然存在…

因此,如果您的应用程序仅是PHP5,则 应该 没有错CI_Base::get_instance();,这是相同的…



 类似资料:
  • 问题内容: 为简单起见,请设想这种情况,我们有一台2位计算机,它具有一对称为r1和r2的2位寄存器,并且仅适用于立即寻址。 假设位序列 00 表示 添加 到我们的CPU中。也 01 的装置将数据移动到R 1和 10组 的装置将数据移动到R2。 因此,这台计算机和一个汇编器都有一种汇编语言,其中的示例代码将像 简而言之,当我将此代码汇编成本地语言时,文件将类似于: 上面的12位是以下代码的本机代码:

  • 请向我解释为什么我总是得到这个错误: 显然,我只在开发模式下得到它,它不会在我的生产构建中发生,但这非常烦人,我根本不明白在我的开发环境中出现错误不会在prod上显示的好处--可能是因为我缺乏理解。 或者强制使用如下构造函数检测更改:: 但是为什么我总是遇到这个错误呢?我想了解它,这样我就可以避免这些黑客修复在未来。

  • 我有一个测试用例,在我的本地日食环境中运行良好。 但当我在Gitlab中使用同样的方法时,它失败了。我使用了下面的docker图片:maven:3.3.9-jdk-8。 它下载并提取chrome驱动程序https://chromedriver.storage.googleapis.com/90.0.4430.24/chromedriver_linux64.zip2021-05-17 16:33:5

  • Overview 平时项目里用的是jenkins,但很难找到好用又免费的jenkins hosting服务,而travis-ci.org免费为github用户提供服务且非常易用,SpringSide的地址为 https://travis-ci.org/springside/springside4 。不过商业的项目就没这么幸运了,两个并发要129美刀/月,十个并发要489美刀,不过其实也不贵。 Qu

  • 在 Travis CI 中使用 Docker 当代码提交到 GitHub 时,Travis CI 会根据项目根目录 .travis.yml 文件设置的指令,执行一系列操作。 本小节介绍如何在 Travis CI 中使用 Docker 进行持续集成/持续部署(CI/CD)。这里以当代码提交到 GitHub 时自动构建 Docker 镜像并推送到 Docker Hub 为例进行介绍。 准备 首先登录

  • 蓝鲸持续集成平台(代号蓝盾)是一个开源的持续集成和持续交付系统,目前服务于腾讯 10000+ 开发人员,现已成为公司指定的 CI 平台。另外,她也获得行业至今为止唯一一个 4 级认证的 DevOps 标准,蓝鲸智云体系平台之一。 使用蓝盾屏蔽掉所有研发流程中的繁琐环节,让你聚焦于编码。蓝盾通常被用于: 工程编译 静态代码检查 运行测试用例,及时发现BUG 部署与发布 蓝盾提供了流水线、代码库、凭证