Larkin - 独解&

 

何为引用?引用就是某一变量or资源的一个别名。

  • $num = 3;
  • $num2 = $num;
  • $num3 = &$num;
  • $num3 = 6;
  • echo($num);  // 6
  • echo($num2); // 3
  • echo($num3); // 6

此时我们可以看出$num3与$num所表示的值为同一内存的值。

下面再看一例子:

  • $arr = array( "username"=>"小强" ); 
  • $arr2 = &$arr;
  • $arr3 = $arr; 
  • $arr4 = $arr2; 
  • $arr2["username"] = "小红";
  • print_r($arr); 
    Array
    (
        [username] => 小红
    )
  • print_r($arr2);
    Array
    (
        [username] => 小红
    )
  • print_r($arr3);
    Array
    (
        [username] => 小强
    )
  • print_r($arr4);
    Array
    (
        [username] => 小强
    )

没错&就是这么犀利,或许让人很容易误解,下面就让 Larkin 独家讲道:

  • $arr = array( "username"=>"小强" ); //  开辟堆内存存放数组,栈$arr存放堆地址
  • $arr2 = &$arr; // 栈$arr2存放栈$arr存放的堆地址
  • $arr3 = $arr; // 新开辟堆内存存放复制$arr指向的数组,栈$arr3存放新堆地址
  • $arr4 = $arr2; // 新开辟堆内存存放复制$arr2指向的数组,栈$arr4存放新堆地址

最后一目了然。下面我们在函数中使用&

我们发现引用传参将会保持一致性,永远不变心。

下面我们来看块级作用域的PHP模仿函数式Javascript闭包模式:

 

 下面模仿JS的构造函数创建对象:

简单创建对象:

对象引用:

内部 private 变量:

 

 

 

 

 

 

posted @ 2017-11-30 16:35  黄开金  阅读(193)  评论(0)    收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示