2013-08-24 3 views
0

제목에 내 방법 중 하나에 많은 조건문이 있습니다. 그 중 내 두 가지에 붙어 있습니다 return FALSE 내 조건 중 두 가지.메서드는 FALSE를 여러 번 반환합니다.

내 컨트롤러에서 나는 메소드가 true를 반환하는 경우 확인 그래서 내가 MVC를 사용하고 있습니다 :

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

나는 거짓 진술을 얼마나 , 그리고 문자열을 반환하는 명령문. 내 컨트롤러에서 어느 것이 반환되는지 구별하는 방법은 무엇입니까?

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

여기 내 논리가 올바르지 않습니다

이 같은 일을 생각했다? 어떤 도움이라도 좋을 것입니다.

편집 한

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

답변

1

정말 문제가 무엇인지하지 않는 날 badcap 제공합니다. 사용하는 경우 궁금한데

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

맞지 않습니까?

그렇다면 괜찮은 방법입니다.

코드를 명확하게 만들려면 상수를 사용하여 반환 값의 이름을 지정할 수도 있지만 가능한 경우 3 회만 반환하므로 실제로 적용되지는 않습니다. 가능한 50 개의 가능한 반환 값을 가진 함수를 만들 때 생각할 것입니다.


코드의 주요 문제점은 함수를 두 번 호출하면 성능에 좋지 않다는 것입니다.

당신은 변수를 먼저 지정하고 반환 값을 적용하고 === 증가 공연을 사용, 그것은 것입니다 입력하는 확신으로, 당신의 IF를 또한

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

에서 사용한다.

0

비어 있지 않은 문자열이나 0이 아닌 정수는 항상 부울로 간주되는 경우 true로 평가됩니다. 함수의 값이 'badcap'를 반환하는 경우에도

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

이 true로 평가 것이고, 다른 조건이 무시 될 경우이 조건은 구현 다음과 같다 : 그래서, 오류가 첫 번째 줄에 있습니다. 대신

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

false 또는 true와 함께 하나 이상의 변수를 전달하십시오.

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'); 
      } 
     } 
     } 
    } 
+0

질문에 대한 오해가있을 수 있습니다 .. !! 알려주세요 .. !! –

관련 문제