时间:2021-07-01 10:21:17 帮助过:22人阅读
PHP中的引用意味着,用不同的变量名访问同一变量内容,类似于Unix的文件名和文件本身(变量名是目录条目,变量内容是文件本身,即用不同的目录条目访问同一文件),可以看做Unix文件系统中的硬链接。
文件系统中的链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(InodeIndex)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。与硬连接相对应,Lnux系统中还存在另一种连接,称为符号连接(Symbilc Link),也叫软连接。软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
引用主要用来做三件事:
指向同一内容
引用允许允许用两个变量指向同一个内容,如$a = & $b
,意味着$a
和$b
指向同一个变量。
如果对一个未定义的变量进行引用赋值、引用参数传递或引用返回,则会自动创建该变量。比如,下面的程序会自动创建变量$a
。
- <code>function foo(&$var) {}
- foo($a);</code>
自PHP 5起,new
操作符自动返回引用。
引用传递
用引用传递变量,可以通过下面的代码实现,foo
函数中变量$var
指向了和$a
指向的同一内容。。
- <code><!--?php
- function foo(&$var) {
- $var++;
- }
- $a = 1;
- foo($a);
- echo $a;</code--></code>
只有函数定义中有引用符号&
,在函数调用时没有引用符号&
。
引用返回
要返回引用,使用下面的语法。
- <code><!--?php
- class foo {
- public $value = 42;
- public function & getValue() {
- return $this--->value;
- }
- }
- $obj = new foo;
- $myValue = & $obj->getValue();
- $obj->value = 2;
- echo $myValue;</code>
注意,引用返回和参数传递不同,函数定义和函数调用(指出返回的是一个引用,而不是通常的一个拷贝)这两个地方都用&
符号。
取消引用
当unset()
一个引用时,只是断开了变量名和变量内容之间的绑定,变量内容不被销毁。
引用定位
许多PHP的语法结构是通过引用机制实现的,比如global
引用和$this
指针。
当用global $var
声明一个变量时,实际上是建立了一个到全局变量的引用,和$var = & $GLOBALS['var']
作用是相同的。在对象方法中,$this
永远是调用它的对象的引用。
(全文完)
以上就介绍了引用 - PHP手册笔记,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
人气教程排行
-
174次
1
php如何获取跳转前的url
-
174次
2
php格林威治时间转换成当前时间的方法
-
174次
3
为什么php不能做大型系统?
-
174次
4
range函数怎么用
-
174次
5
php中计算页面加载时间几种方法总结_PHP教程
-
174次
6
求帮助,关于paypal支付返回值修改订单状态
-
174次
7
typecho怎么配置文章内容页?
-
174次
8
PhpStorm左侧structure不显示文件的方法列表是这么回事?
-
174次
9
查看PHP的环境变量_PHP
-
174次
10
PHP Primary script unknown 解决方法总结
-
174次
11
php的命名空间与自动加载实现方法
-
174次
12
解决laravel 出现ajax请求419(unknown status)的问题
-
173次
13
php 如何删除mysql记录
-
173次
14
PHP如何替换数组中的指定元素
-
173次
15
怎么去除字符串中非汉字、非字母、非数字的字符
-
173次
16
mysql如何一次执行多条SQL语句
-
173次
17
修改header里面的Connection为close解决方法
-
173次
18
PHP基于session.upload_progress 实现文件上传进度显示功能详解
-
173次
19
php5.6.x到php7.0.x特性小结
-
172次
20
php为什么会出现504错误