2014-09-04 3 views
-1

일부 PHP 디자인 패턴에서 코드 예제를 작성한 일부 작성자가 메소드 내부로 리턴되지만 리턴 값을 지정하지 않았습니다. 그냥 "return"이라고 말합니다.반환 값없이 반환 키워드를 사용합니까?

그 중 어떤 것을 설명 할 수 있습니까? 아래는 예입니다

고맙습니다!

function addListItem(ListItem $listItem){ 
    if(in_array($listItem, $this->listitems, true)){ 
     return; 
    } 
    $this->listitems[] = $listItem; 

} 

답변

1

, 또는 표시하기 유효한 결과를 산출하는 것은 불가능합니다.

return; 

에게가 호출 된 후 즉시 기능을 중지합니다

return null; 
0

글쎄, 처음에는 메서드의 나머지 코드를 불필요하게 만드는 if 문을 칠 수 있습니다. 예를 들어

: (당신의 예에서와 같이, IO, 변경 전역, 또는 참조로 전달 된 인수 또는 객체 속성 - $this->listitems[] = $listItem;을) 부작용에 대한 끝났다

if(user->log_in == "") 
{ 
    show_error_msg(); 
    return; 
} 
+0

감사합니다. – eldan221

1

return 문에 해당합니다. 정수, 문자열 또는 부울 값과 같은 값이 반환되기를 원하지 않으므로 코드를 중단하여 코드가 계속되지 않게합니다.

이것은 for 또는 while 루프의 break과 비교할 수도 있습니다.

+1

나는 그것이 사용 된 느낌 이었지만, 단지 이중 점검을 원했다. 답장을 보내 주셔서 감사합니다! – eldan221

0

같은 코드를 작성의 "기술적으로 올바른"방법은 다음과 같습니다

if(!in_array($listItem, $this->listitems, true)) { 
    $this->listitems[] = $listItem; 
} 

그러나, 때로는 여러 줄에 걸쳐 하나의 if 블록이 발생할 수 있습니다 이러한 방식으로 더 복잡한 테스트 및 절차가있을 수 있습니다 많은 && 또는 중첩 된 if 문이 화면 가장자리에서 벗어납니다.

따라서 코드의 패턴 즉 "오류 조건 확인 및 필요한 경우 현재 블록 종료"를 보는 것이 일반적입니다. 즉, 자신이 원하는만큼 조건을 몇 개나 가질 수 있으며, 각 조건마다 자체적 인 오류 조건이있을 수 있으며, 코드가 그 상태를 끝까지 관리 할 수 ​​있다면 좋은 결과를 얻을 수 있습니다.

경우에 따라 오류 처리가 유용 할 수 있습니다. 다음과 같음 :

try { 
    if(failure condition 1) throw new Exception("Error message 1"); 
    if(failure condition 2) throw new Exception("Error message 2"); 
    // ... 
    do something here; 
} 
catch(Exception $e) { 
    // report error here 
} 
+0

답장을 보내 주셔서 감사합니다! 또는 try 블록에서 switch 문을 사용할 수 있습니다 ... – eldan221

관련 문제