0

タイトルが示すように、メソッドの 1 つに多くの条件ステートメントがあります。そのうちのreturn FALSE2つの条件で、2つに固執しています。

私は MVC を使用しているので、コントローラーでメソッドが TRUE を返すかどうかを確認します。

if ($this -> m_homepage -> reset_pw($step = 1, $value)) { // If all is true in method redirect
    $this -> session -> set_flashdata('message', 'A Message Was Sent');
    redirect('c_homepage/index', 'location');
} elseif ($this -> m_homepage -> reset_pw($step = 1, $value) == 'badcap') { // If captcha fails return bad_recaptcha
    var_dump("bad_recaptcha");
} else { // if any other FALSE happens (only one more left) then that means account is locked
    var_dump("account is locked");
}

そして私の方法では:

if (!$cap -> is_valid) {// If reCaptcha not valid
    return 'badcap';
} else {// If reCaptcha is valid
    if ($lockedaccount == '1') {// If account is locked (1)
        return FALSE; // No email should be sent period.
    } else {
        if ($no_employee) {// email does not exist then 

            ................ // Set up email body and what not

            if ($email_sent() { // If email is sent
                $this -> session -> unset_userdata('email');
                return TRUE;
            }
        }
    }
}

したがって、私のメソッドでは、FALSE ステートメントと、文字列を返すステートメントがあることに注意してください。コントローラでどちらが返されたかを区別するにはどうすればよいですか?

私はこのようなことを考えました:

if ($this -> m_homepage -> reset_pw($step = 1, $value) == 'badcap') {
    // This will allow me to execute code is the recaptcha (badcap) is returned
}

ここでの私の論理は間違っていますか? どんな助けでも素晴らしいでしょう。

編集 1

var_dump($this -> m_homepage -> reset_pw($step = 1, $value)); 

私にバッドキャップを与えます

4

3 に答える 3

1

私はあなたの問題が何であるかを本当に理解していません。あなたは使用するかどうか疑問に思っています

if ($my_return == 'badcap')
{ 
// CODE
}

正しいですか?

もしそうなら、はい、それは大丈夫です。

コードをより明確にするために、定数を使用して戻り値に名前を付けることもできますが、戻り値が 3 つしかないため、実際には適用されません。50 の異なる戻り値を持つ関数を作成するときに、これについて考えるでしょう。


コードの主な問題は、関数を 2 回呼び出すことです。これはパフォーマンスに悪影響を及ぼします。

最初に変数を割り当て、それを IF で使用する必要があります

$return_val = $this -> m_homepage -> reset_pw($step = 1, $value);
if ($return_val == TRUE) ...
if ($return_val == 'badcap')

また、戻り値を適用し、それがどの型になるかを確信しているので、===パフォーマンスを向上させます。

于 2013-08-24T16:04:23.880 に答える
0

空でない文字列またはゼロ以外の整数は、ブール値として取得された場合、常に true として評価されることに注意してください。したがって、エラーは最初の行にあります。

if ($this -> m_homepage -> reset_pw($step = 1, $value))

関数が値「badcap」を返したとしても、これは true と評価され、この条件が実装され、次の if else 条件は無視されます。代わりに、

if ($this -> m_homepage -> reset_pw($step = 1, $value) == TRUE)
于 2013-08-24T16:18:24.580 に答える
0

false または true と共にもう 1 つの変数を渡します。

    if (!$cap -> is_valid) {
         return array('badcap','False'); 
       } else {
        if ($lockedaccount == '1') {
           return array('lockedaccount','False'); 
        } else {
        if ($no_employee) {// email does not exist then 

            if ($email_sent() { // If email is sent
                $this -> session -> unset_userdata('email');
                return array('mailsent','True'); 
            }
         }
      }
    }
于 2013-08-24T16:20:04.900 に答える