php函数传引用,关于php:函数调用通过引用传递?

我在cas.module的第245行drupal CAS模块中看到了一些我并不完全理解的东西:

$initialized = &drupal_static(__FUNCTION__, FALSE);

具有参考符号的函数在它之前发生了什么? 我认为它只适用于变量。 有人可以给我一个简单的解释吗? 这样调用函数时会发生什么,$initialized的值是多少?

请看这里stackoverflow.com/questions/4355300/和这里的php.net/manual/en/language.references.return.php

Drupal使用该函数在单页加载期间缓存数据。它实际上可以像下面这样使用:

static $initialized = false;

只有通过使用中央存储并按功能名称保存变量记录,其他功能才能在页面请求期间访问(对于Drupal更重要,重置)该值。

Drupal如何使用它:

Jeff Eaton在Drupal 7中创建了一篇关于drupal_static和其他缓存技术的博文。

假设另一个模块想要调用您的函数,因为您已将$initialized设置为true,您知道可以从缓存中获取数据。但是,如果其他模块不希望您缓存它呢?然后它可以重置您的静态变量,如下所示:

$initialized = &drupal_static('your_module_your_function');

$initialized = false;

$freshData = your_module_your_function();

它可能不是最干净的模式,但这就是Drupal在很多地方的表现。

从PHP的角度来看它的作用:

使用此构造允许被调用函数按引用而不是按值返回其值。为了做到这一点,被调用的函数也必须用&符号定义,例如:

public function &getBar() {

return $this->bar;

}

您甚至可以将它与参数by-reference结合起来。这样,您可以通过函数一直传递引用,这样当您更改返回值时,您也可以更改原始值。例如:

function &getRef(&$x) {

return $x;

}

$a = 1;

$b = &getRef($a);

$b++;

echo $a; // Will output 2

函数返回作为参考返回。从手册:

Returning by reference is useful when you want to use a function to

find to which variable a reference should be bound. Do not use

return-by-reference to increase performance. The engine will

automatically optimize this on its own.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值