查看codeigniter的源代码,

在它的助手函数中,我不断看到代码

我知道它返回了一个对$CI超级对象的引用,但是get_instance()是从哪里来的呢?

推荐答案

它基本上是使用函数而不是静电方法的Singleton Design Pattern.

要更深入地观察,请查看source code

所以基本上,它不强制执行单例,但它是通向公共函数的捷径...

实际上,现在我明白了.为了与PHP4兼容,他们必须执行double-global-variable-hack才能使其正确返回引用.否则,所有的参考资料都会被搞得一团糟.由于php4不支持静电方法(好吧,无论如何都是正确的),所以使用函数是更好的方式.所以由于遗留的原因它仍然存在…

所以,如果你的应用程序只有PHP5,那么改为CI_Base::get_instance();也没什么错,它是一样的...

Php相关问答推荐

composer如何解析包名?

如何使用PHP停止foreach循环中的重复项?

Woocommerce自定义变体html表仅显示带值的列

使用列入黑名单的单词和自定义业务逻辑的组合将特定的子字符串包装在HTML标记中

将一个按钮添加到WooCommerce产品的管理视图中,该按钮链接到一个自定义的WebHook,并在末尾附加产品ID

从目录文件夹中获取文件并追加到 Select 下拉列表(选项)-wordpress/wc

如果为布尔值,则 for each 循环重新启动

在指定的约束内使用随机量填充数据集

Azure应用程序无法访问共享文件夹

在WooCommercel邮箱通知上添加来自Apaczka插件的选定交付点

Shopware 6插件:由于删除了配置密钥,更新后配置值不正确

.htaccess 重写规则问题

Filament PHP v3:在禁用的表单字段上,ID 不会写入数据库

如何使用 WhatsApp Cloud API 向 WhatsApp 发送消息,而无需在发送消息之前注册收件人号码?

显示时间范围内的可用空位,同时考虑已预订的空位

在 WordPress 中使用 $wpdb 运行 MySQL 事务是否安全?

在 GA4 Data API V1 Beta 中使用 inListFilter 过滤器时出错

Symfony 自定义注销

如何为多个表的id列设置不同的值

在 EasyAdmin 中添加全局操作,将我的按钮放在表格下方而不是上方