美文网首页
php函数如何返回引用?

php函数如何返回引用?

作者: BigFish__ | 来源:发表于2019-03-18 00:03 被阅读0次

通过对Python的函数返回值返回的是值还是引用?的研究,引发了我对于php的函数返回值的思考:在php中,函数的返回值是变量的一份拷贝,那么php的函数返回值是否也可以返回变变量的引用呢?

答案是可以。只需要使用php的引用返回语法即可。

下面的代码演示了没有使用引用返回时的情况:

class Test
{
    public $data = 'hi';

    public function a()
    {
        return $this->data;
    }

    public function b()
    {
        $newData = $this->a();
        echo $this->data . ' - ' . $newData . PHP_EOL;  // hi - hi

        $newData = 'hello';
        echo $this->data . ' - ' . $newData . PHP_EOL;  // hi - hello
    }
}

$test = new Test();
$test->b();

因为a函数的返回值不是引用,所以修改newData变量的值对源值没有影响,两个变量指向的是不同的内容。

下面是来使用引用返回来看看效果:

class Test
{
    public $data = 'hi';

    public function &a()
    {
        return $this->data;
    }

    public function b()
    {
        $newData = &$this->a();
        echo $this->data . ' - ' . $newData . PHP_EOL;  // hi - hi

        $newData = 'hello';
        echo $this->data . ' - ' . $newData . PHP_EOL;  // hello - hello
    }
}

$test = new Test();
$test->b();

这里需要注意a方法的定义和调用都加上了&符号,分别表示引用返回引用赋值,如果只是定义了引用返回但是赋值的时候不是引用赋值,那么拿到的也只是返回值的拷贝。

从上面的代码可以看出$newData修改之后,原实例属性的值也同步变化了。

最后,虽然使用引用返回解决了文章开头提到的问题。但是在php的官方手册中也说到了,“不需要为了增加性能而刻意的使用引用返回,因为解释器会自动的帮我们优化好这一切

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.

所以对于phper来说,除非有特殊的使用场景,不然无需因为性能的原因来刻意的使用它。

完!

参考资料
Returning References

相关文章

  • php函数如何返回引用?

    通过对Python的函数返回值返回的是值还是引用?的研究,引发了我对于php的函数返回值的思考:在php中,函数的...

  • 进阶|熟练使用VLOOKUP函数之精解精析【深度长文】

    通过文本你可以学到: Excel相对引用与绝对引用Vlookup函数如何同时返回多列Vlookup函数模糊匹配 在...

  • 三、JavaScript 笔记之闭包

    当函数作为参数传入函数,该函数为高阶函数,当函数作为函数的返回结果返回,就形成了闭包。返回的函数被引用,该引用就保...

  • caller和callee

    caller返回调用当前函数的引用,如果是函数自身调用,则返回null,callee返回正在被执行函数的引用,即返...

  • php json记录

    1:PHP json_encode()函数用于在PHP JSON编码。这个函数成功返回JSON表示的值,失败则返回...

  • 2019-11-19 callee和caller的区别

    callee就是返回正在执行函数的本身引用caller返回一个函数的引用,这个函数调用了当前的函数。 callee...

  • C++第5天:第84课-第94课

    引用 引用初始化 引用函数形参 引用函数返回值 引用 const不可更改形参

  • PHP PING值函数

    PHP PING值函数 直接返回结果

  • caller和callee

    关键词caller :返回一个函数的引用,这个函数调用了当前的函数callee:返回正在执行的函数本身的引用,它是...

  • Effective c++ 学习笔记(item21)

    函数返回不要返回引用 #函数返回不要返回引用 这一章比较简单,总结起来就是,对于一个函数内部用到的局部变量都是在函...

网友评论

      本文标题:php函数如何返回引用?

      本文链接:https://www.haomeiwen.com/subject/yqqmmqtx.html