【发布时间】:2014-10-24 14:32:06
【问题描述】:
下面这行代码究竟做了什么:
$config = &get_config();
& 运算符是否通过引用传递? get_config() 也是 CodeIgniter 助手吗?我无法谷歌解释。
【问题讨论】:
标签: php codeigniter codeigniter-url codeigniter-routing
下面这行代码究竟做了什么:
$config = &get_config();
& 运算符是否通过引用传递? get_config() 也是 CodeIgniter 助手吗?我无法谷歌解释。
【问题讨论】:
标签: php codeigniter codeigniter-url codeigniter-routing
正如 Konrad Rudolph 所说:https://stackoverflow.com/a/3957588/837765
& 运算符告诉 PHP 在将数组传递给 功能。相反,对数组的引用被传递到 函数,因此该函数修改原始数组而不是 复制。
get_config() 将主 config.php 文件加载到一个数组中,您可以直接使用 & 运算符修改返回数组。
这不是帮手。看看这里(找到get_config() 函数):
http://www.8tiny.com/source/codeigniter/nav.html?_functions/index.html
【讨论】:
& 运算符是否通过引用传递?
是的,它是通过引用传递的,因此您可以更改配置数组。
get_config() 也是 CodeIgniter 助手吗?
不,它是一个核心 CodeIgniter 方法,它加载定义在 application/config/config.php 中的配置数组。
你可以看源码here。
【讨论】:
& 运算符是 PHP 的引用运算符。
CodeIgniter 是一个相当古老的框架。在旧版本的 PHP 中,对象过去是按值传递的。这意味着 PHP 在处理内存分配之类的事情时非常浪费,这使得事情变得比他们需要的要慢。为了防止 PHP 在每次你想访问一个对象时分配内存,你应该使用引用。
在较新版本的 PHP 中,对象和数组自动通过引用传递。当涉及到数组时,只有在更改数组时才会分配新的内存。
99% 的时间都不需要使用引用。 PHP 将以一种有意义的方式为您优化代码。仅当您了解它们的作用并且有正当理由使用它们时,您才应该使用它们。
您可以通过searching for it in the source code on GitHub找到get_config()函数。
【讨论】: