2016-08-16 4 views
1

私はPHPでいくつかのメソッドを持つクラスを持っています。PHPはfalse bubble upを返しますか?

1つのパブリックメソッドは、保護されたメソッドを呼び出します。 protectedメソッドが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

$classは、偽の値を持つことになりますが、あなたはまだあなたが終了すると、すぐにその値を返すメソッドをしたい場合YourClass::a()からそれを返す必要があります。 returnは、それが呼び出された関数/メソッドの範囲内にあります。

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

私はメソッドが偽を返すようにしたい$クラスがfalseであるかどうかをチェックしてからfalseを返す必要がありますか? – Layers

+0

正確に。私の更新された答えはそれを示しています。 –

+0

これは機能しますか? (!$ class)?偽を返します。 – Layers

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 
関連する問題