php函数返回引用

Returning References

    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. Only return    references when you have a valid technical reason to do so. To    return references, use this syntax:   

<?php
class foo {
    public
$value = 42;

    public function &
getValue() {
        return
$this->value;
    }
}

$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42.
$obj->value = 2;
echo
$myValue;                // prints the new value of $obj->value, i.e. 2.
?>
    In this example, the property of the object returned by the    getValue function would be set, not the    copy, as it would be without using reference syntax.  

Note:          Unlike parameter passing, here you have to use     & in both places - to indicate that you     want to return by reference, not a copy, and to indicate that     reference binding, rather than usual assignment, should be done     for $myValue.   

Note:          If you try to return a reference from a function with the syntax:     return ($this->value); this will not     work as you are attempting to return the result of an     expression, and not a variable, by reference. You can     only return variables by reference from a function - nothing else.     Since PHP 4.4.0 in the PHP 4 branch, and PHP 5.1.0 in the PHP 5 branch, an     E_NOTICE error is issued if the code tries to return     a dynamic expression or a result of the new operator.   

   To use the returned reference, you must use reference assigment:   

<?php
function &collector() {
  static
$collection = array();
  return
$collection;
}
$collection = &collector();
$collection[] = 'foo';
?>
   To pass the returned reference to another function expecting a reference   you can use this syntax:   
<?php
function &collector() {
  static
$collection = array();
  return
$collection;
}
array_push(collector(), 'foo');
?>

Note:           Note that array_push(&collector(), 'foo'); will      not work, it results in a fatal error.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值