2016-08-16 1 views
1

Ich habe eine Klasse mit einigen Methoden in PHP.In PHP kehrt falsche Blase zurück?

Eine öffentliche Methode ruft eine geschützte Methode auf. Wenn die geschützte Methode false zurückgibt, wird die öffentliche Methode false zurückgegeben und nicht fortgesetzt?

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]; 
    } 
} 

Antwort

2

Nr $class einen falschen Wert haben, aber Sie müssen es immer noch von YourClass::a() zurück, wenn Sie die Methode zu beenden und sofort wieder diesen Wert wollen. return ist nur im Bereich der Funktion/Methode, aus der es aufgerufen wird.

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

Also, wenn Ich möchte Methode a, um falsch zurückzugeben Ich muss überprüfen, ob $ class falsch ist und dann false zurückgeben? – Layers

+0

Genau. Meine aktualisierte Antwort zeigt das. –

+0

Funktioniert das? (! $ Klasse)? falsch zurückgeben; – Layers

3

Nr return ist nicht wie eine Ausnahme, und es gibt keine Blasenbildung. Wenn Sie nicht explizit eine return haben, dann gibt es eine implizite 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" 

Dies gilt unabhängig davon, wie/wo Sie die Funktion definieren, unter anderem als Klassenmethode:

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