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.
php函数传引用,关于php:函数调用通过引用传递?相关推荐
- Python基础day05【函数(函数传参的两种形式、函数形参)、拆包、引用、可变与不可变类型、引用做函数参数注意点】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] 目录 0.复习 1.函数传参的两种形式[掌握] 2.函数形参 2.1.缺省参数(默认参数) ...
- 2021-01-14python函数传参是传值还是传引用? 参数若是简单类型是传值 若是对象类型则是传引用,python是兼容两者传参方式的
python函数传参是传值还是传引用? 首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题. ...
- 【C++】21.函数传参 传指针和传引用的区别
指针传参 向函数传指针参数时,注意区分指针的指向(地址) 与 指针指向的地址中存放的值的区别: 改变形参指针的指向,实参指针指向不会变,实参指向的地址存放的值也不会变: 改变形参指针指向的地址中存放的 ...
- Javascript 之《函数传参到底是值传递还是引用传递》
前言 这个问题其实困惑了我好久,但是在实际使用中总是得过且过,不想去深究.由于这种态度,在学习 Javascript 过程中,水平一直都是出于半桶水状态,很多概念和原理似懂非懂,模糊不清. 所以,写了 ...
- python函数传值还是地址_python中给函数传参是传值还是传引用
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...
- PHP变量、引用、函数传参之彻底掌握,从此节操是路人
2019独角兽企业重金招聘Python工程师标准>>> 今天绝对是兴奋的一天,不仅仅是周五这个特殊的日子(周六日可以休息啦),也不是弄清了某wordpress插件的功能流程,更不是再 ...
- JS函数传参时:值传递与引用传递的区别
JS函数传参时:值传递与引用传递的区别 一.先分析基础数据与复杂数据的区别 : 基本数据类型:Undefined.Null.Boolean.Number.String 引用数据类型:对象 如:var ...
- 论JS函数传参时:值传递与引用传递的区别
JS函数传参时:值传递与引用传递的区别? 值传递:值传递的数据为基本数据类型,基本数据类型在内存中存放的是数值本身:值传递为单向传递,只能由实参传递给形参. 引用传递:引用传递的数据为复杂数据类型,复 ...
- 函数传参问题(指针传参,值传参,引用传参):
目录 形参和实参: 形参和实参关系: 实参为值传值 实参为指针传值 实参本身为普通变量 实参本身为指针 一级指针 二级指针 引用传值 形参和实参: 什么是形参(parameter),什么是实参(arg ...
- Shell函数(函数定义、函数变量、函数调用、函数传参、函数返回值、获取函数返回值)
分享知识 传递快乐 1.函数定义 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.Shell 函数定义的语法格式如下: [function] funname [()]{函 ...
最新文章
- HDU-1069-Monkey and Banana
- Windows下安装Objective-C开发环境
- mysql accountlevel1_mysql---修改表结构
- 分布式与人工智能课程(part15)--深度学习
- .NET Core开发实战(第11课:文件配置提供程序)--学习笔记
- 读取txt文件赋值到DataGridView中
- poj 1363 Rails 栈应用基础题
- 游戏建模软件的ZBrush和Mudbox哪个好
- 节奏大师服务器不稳定,节奏大师无法登陆的原因及解决方法
- QQ坦白说闹得我差点分手,破解揪元凶证清白
- 三星固态性能测试软件,三星850 EVO 120G固态硬盘评测——性能测试与保养
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323
- 函数-6已知输入为一个列表,列表中的元素都为整数,我们定义元素筛选函数为foo,功能是检查获取传入列表对象的所有奇数位索引(注意列表的索引是从0开始的)对应的元素,并将其作为新列表返回给调用者。
- 茶有真香 | 一款茶好不好喝自己说了才算
- html5 gif 只播放一次,使用JS和canvas实现gif动图的停止和播放代码
- KITTI 3D目标检测离线评估工具包说明
- 算法心得:高效算法的奥秘 作者:[美] Henry S. Warren, Jr.
- 【雕爷学编程】Arduino动手做(79)---MQ135空气检测模块
- 2.2. Concepts
- 查看java安装路径[linux]