zoukankan      html  css  js  c++  java
  • 引用

    引用是什么

    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永远是调用它的对象的引用。

    (全文完)

  • 相关阅读:
    C#中静态变量 静态类 静态成员
    C#类型转换
    ASP.NET页面跳转及传值方式
    ADO.NET
    C#方法的参数类型
    Oracle %TYPE 和 %ROWTYPE
    静态页面与动态页面
    相对路径和绝对路径
    45 个非常有用的 Oracle 查询语句(转)
    ASP.NET MVC 之表格分页
  • 原文地址:https://www.cnblogs.com/sintune/p/php-references.html
Copyright © 2011-2022 走看看