【问题标题】:what will be returned in this function这个函数将返回什么
【发布时间】:2014-03-09 02:19:13
【问题描述】:

我有一个关于从函数返回值的非常基本的问题: 我知道例如在下面的函数中,将返回一个字符串:

function sample_1() {
return 'STRING';
}

或者在这个中,变量是什么:

function sample_2($var) {
return $var;
}

但是如果没有提到返回值怎么办。也就是说,这个返回的值是什么:

class Sample_3{
function __set($var, $value) {
    if ('STRING' == $var) {
        $this->$var = $value;
        return;
    }
}
}

【问题讨论】:

  • 为了使 sample_3 工作,它应该被封装在一个类中。在任何情况下,返回值都是NULL
  • 它会返回null,但你想返回什么?
  • 是的! Sample_3 是一个类。那么如果它返回NULL,那有什么意义呢?如果我删除退货部分,它会改变吗?
  • 对于 setter 函数,您不需要返回。只有在你想跳出来的时候才使用它,比如if ($value == 'bad_value') return;,这样它就什么都不做。当然,你总是可以颠倒逻辑和状态if ($value != 'bad_value') $this->$var = $value;。这完全取决于你。
  • Sample_3 中的 return 语句没有任何意义 - 除非 if 检查之后有另一个语句。返回将触发函数在该位置的离开 - 之后的所有代码都被忽略 - 这称为“提前退出”。

标签: php function return


【解决方案1】:

如果省略返回值,将返回 NULL。

http://www.php.net/manual/en/functions.returning-values.php

http://www.php.net/manual/en/function.return.php

返回用作“提前退出”:

class Sample_3{
function __set($var, $value) {
    if ('STRING' == $var) {
        $this->$var = $value;
        return; // if this point is reached, exit __set
    }
    // code not processed, if var is STRING
    if ('ANOTHER-STRING' == $var) {
        $this->$var = $value;
        return;
    }
}
}

【讨论】:

    猜你喜欢
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2018-01-28
    • 1970-01-01
    相关资源
    最近更新 更多