【问题标题】:CodeIgniter - & operatorCodeIgniter - & 运算符
【发布时间】:2014-10-24 14:32:06
【问题描述】:

下面这行代码究竟做了什么:

$config = &get_config();

& 运算符是否通过引用传递? get_config() 也是 CodeIgniter 助手吗?我无法谷歌解释。

【问题讨论】:

    标签: php codeigniter codeigniter-url codeigniter-routing


    【解决方案1】:

    正如 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

    【讨论】:

    • 我删除了我的答案。这个更好! +1
    【解决方案2】:

    & 运算符是否通过引用传递?

    是的,它是通过引用传递的,因此您可以更改配置数组。

    get_config() 也是 CodeIgniter 助手吗?

    不,它是一个核心 CodeIgniter 方法,它加载定义在 application/config/config.php 中的配置数组。

    你可以看源码here

    【讨论】:

      【解决方案3】:

      & 运算符是 PHP 的引用运算符。

      CodeIgniter 是一个相当古老的框架。在旧版本的 PHP 中,对象过去是按值传递的。这意味着 PHP 在处理内存分配之类的事情时非常浪费,这使得事情变得比他们需要的要慢。为了防止 PHP 在每次你想访问一个对象时分配内存,你应该使用引用。

      在较新版本的 PHP 中,对象和数组自动通过引用传递。当涉及到数组时,只有在更改数组时才会分配新的内存。

      99% 的时间都不需要使用引用。 PHP 将以一种有意义的方式为您优化代码。仅当您了解它们的作用并且有正当理由使用它们时,您才应该使用它们。

      您可以通过searching for it in the source code on GitHub找到get_config()函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-01
        • 2011-04-20
        相关资源
        最近更新 更多