【问题标题】:Does null coalescing operator call a function twice?空合并运算符是否两次调用函数?
【发布时间】:2019-03-06 00:34:40
【问题描述】:

null 合并运算符 (??) 如果存在且不为 NULL,则返回其第一个操作数,否则返回其第二个操作数。

如果第一个操作数是函数或方法调用,运算符是否调用了两次函数调用?

例如,假设函数 get_name() 返回一个字符串值或 null。

$name = get_name() ?? 'no name found';

get_name() 被调用一次并且存储的值准备将其分配给变量 ($name) 或当 ?? 由于函数返回的值对isset() 为真而被激活时,确实如此??第二次调用第一个操作数来获取值?

【问题讨论】:

    标签: php php-7 null-coalescing-operator


    【解决方案1】:

    它只被调用一次。

    这很容易看出,如果你给你的函数添加了副作用,比如打印,例如:

    <?php
    function get_name() {
        print("get_name() was called\n");
        return "somestring";
    }
    
    $name = get_name() ?? 'no name found';
    print($name);
    ?>
    

    Demo

    【讨论】:

    • 不错的测试!真的很简单,一旦你看到有人建议它。谢谢
    • 您可以使用__FUNCTION____METHOD__ 常量来获取当前函数的名称。方法将显示类class::method。 :) 例如print __FUNCTION__."() was called\n";
    猜你喜欢
    • 2011-02-20
    • 2011-06-19
    • 2010-10-03
    • 2012-09-19
    • 2013-09-13
    • 2019-06-12
    • 2016-01-31
    • 2010-10-20
    • 2011-09-30
    相关资源
    最近更新 更多