在PHP中确实返回虚假泡沫?

时间:2016-08-16 15:12:29

标签: php return

我在php中有一些类有一些方法。

一个公共方法调用受保护的方法。如果受保护的方法返回false,则public方法返回false而不是继续吗?

public static function a() { 
    $class = getClass();
    // some more code...
}

protected static function getClass() {
    $classList = self::find_by_sql("
        SELECT *
          FROM ".self::$table_name."
         WHERE Class_Closed = FALSE
         ORDER BY Start_Date ASC
    ;");

    if (empty($classList)) {
        return false;
    } else {
        return $classList[0];
    }
}

2 个答案:

答案 0 :(得分:3)

没有。 return不是一个例外,并且没有冒泡。如果您没有明确地拥有return,那么就会隐含return null;

php > function foo() { }
php > var_dump(foo());
NULL
php > function bar() { $x = 42; }
php > var_dump(bar());
NULL
php > function baz() { return 'hi mom'; }
php > var_dump(baz());
string(6) "hi mom"

无论您如何/在何处定义函数,这都适用,包括作为类方法:

php > class foo { function bar() { } }
php > $foo = new foo();
php > var_dump($foo->bar());
NULL

答案 1 :(得分:2)

没有。 $class将具有错误值,但如果您希望方法终止并立即返回该值,则仍需要从YourClass::a()返回它。 return仅在调用它的函数/方法的范围内。

public static function a(){ 
  $class = getClass();
  if (!$class) {
      return false; // or return $class;
  }
  some more code...
}