开发者社区> 杰克.陈> 正文

引用 - PHP手册笔记

简介: 原文:引用 - PHP手册笔记 引用是什么 PHP中的引用意味着,用不同的变量名访问同一变量内容,类似于Unix的文件名和文件本身(变量名是目录条目,变量内容是文件本身,即用不同的目录条目访问同一文件),可以看做Unix文件系统中的硬链接。
+关注继续查看
原文:引用 - PHP手册笔记

引用是什么

PHP中的引用意味着,用不同的变量名访问同一变量内容,类似于Unix的文件名和文件本身(变量名是目录条目,变量内容是文件本身,即用不同的目录条目访问同一文件),可以看做Unix文件系统中的硬链接。

文件系统中的链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(InodeIndex)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。与硬连接相对应,Lnux系统中还存在另一种连接,称为符号连接(Symbilc Link),也叫软连接。软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

引用主要用来做三件事:

  • 指向同一内容
  • 用引用传递变量
  • 引用返回

指向同一内容

引用允许允许用两个变量指向同一个内容,如$a = & $b,意味着$a$b指向同一个变量。

如果对一个未定义的变量进行引用赋值、引用参数传递或引用返回,则会自动创建该变量。比如,下面的程序会自动创建变量$a

function foo(&$var) {}
foo($a);

自PHP 5起,new操作符自动返回引用。

引用传递

用引用传递变量,可以通过下面的代码实现,foo函数中变量$var指向了和$a指向的同一内容。。

<?php 
function foo(&$var) {
	$var++;
}
$a = 1;
foo($a);
echo $a;

只有函数定义中有引用符号&,在函数调用时没有引用符号&

引用返回

要返回引用,使用下面的语法。

<?php 
class foo {
	public $value = 42;
	public function & getValue() {
		return $this->value;
	}
}
$obj = new foo;
$myValue = & $obj->getValue();
$obj->value = 2;
echo $myValue;

注意,引用返回和参数传递不同,函数定义和函数调用(指出返回的是一个引用,而不是通常的一个拷贝)这两个地方都用&符号

取消引用

unset()一个引用时,只是断开了变量名和变量内容之间的绑定,变量内容不被销毁。

引用定位

许多PHP的语法结构是通过引用机制实现的,比如global引用和$this指针。

当用global $var声明一个变量时,实际上是建立了一个到全局变量的引用,和$var = & $GLOBALS['var']作用是相同的。在对象方法中,$this永远是调用它的对象的引用。

(全文完)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PHP官方手册研读--php的垃圾回收机制
在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾;
17 0
PHP官方手册研读--数据类型:字符串
五一闲置在家,撸代码之余,读读“拍黄片”官方手册,巩固下“拍黄片”基础(PHP);
29 0
关于php的引用
关于php的引用
66 0
搞定PHP面试 - 深入了解引用
1. 什么是引用 在 PHP 中引用是指用不同的名字访问同一个变量内容。 PHP 中的变量名和变量内容是不一样的, 因此同样的内容可以有不同的名字。 最接近的比喻是 Unix 的文件名和文件本身——变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的硬链接。 PHP 中的引用并不像 C 的指针:例如你不能对他们做指针运算。引用并不是实际的内存地址,而是符号表别名。
56 0
函数计算PHP 变量不存在无法引用和判断的解决方案
最近研究了函数计算,很不错的服务,总结一个php存在的一个问题,为以后的小白们避免同样的错误。 <?php use RingCentral\Psr7\Response; function initializer($context) { echo 'initializing' .
15610 0
【从入门到放弃-PHP】foreach 引用的坑
背景描述 先看一段代码。 $arr = [ 'jack' => '20', 'tom' => '21', 'marry' => '54', 'less' => '23' ]; foreach ($arr as &$val) { echo $val; .
1777 0
+关注
杰克.陈
一个安静的程序猿~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
PHP安全开发_从白帽角度做安全
立即下载
PHP在机器学习上的应用及云深度学习平台的架构设计与实现
立即下载
复杂PHP系统性能瓶颈排查及优化
立即下载
相关实验场景
更多