2013-04-18 2 views
16

오늘 흥미로운 코드를 실행했습니다. 나는 이것이 PHP의 기능인지 또는 뭔가를 놓치고 있는지를 알아 내려고했지만 Google에서 아무것도 찾을 수 없었다. 아마 그 이름을 모르니까.if 문에서 변수 설정

변수 $logo가 다른 곳으로 설정되지 않는

if($logo = \Repositories\Logo::getLogoData($id)){ 
    $logo_href = $logo->link; 
} 

코드입니다. 이 if 문의 표현식이 해당 클래스 메소드가 아무 것도 반환하지 않는지 확인하고 변수 $logo을 명령문에 사용하도록 설정하는 것처럼 보입니다.

사실인가요? 그렇다면이 세상은 무엇입니까?!

+2

먼저 할당 된 결과 인 할당의 반환 값을 할당 한 다음 평가합니다. – bwoebi

답변

16

조건부에 할당 할 수 있습니다. 논리적으로는 값이 $logo에 할당 된 다음 $logo이 사실인지 여부가 평가됩니다. 사실이라면 조건부의 코드가 실행됩니다.

데이터베이스 결과 집합을 반복 할 때 이러한 종류의 할당/평가가 자주 발생하지만 일반적으로 g 코드 읽기를 명확히하기 위해 이러한 일반적인 사용 사례 외부에서는 피해야한다고 제안합니다.

+0

그것이 내가 생각한 것이지만, 공식 문서를 찾을 수없는 것 같습니다. 거기에 이름이 있니? 그것에 관한 문서를 읽고 싶습니다. –

+1

@ChrisB : 이것은 할당 연산자가 작동하는 방식입니다. 할당 된 값을 반환합니다. Docs : http://php.net/manual/en/language.operators.assignment.php –

+0

@RocketHazmat 방금 if 문에서 표현식을 사용할 수 있는지 알지 못했습니다. –

1

예, 이것은 기능입니다.

$a=$b=5;

을하지만,이 경우에는 마치 var에 $ A의 부울 결과를 상상 : 그것은 같은입니다.

그러나 IDE는 매우 일반적인 버그 소스로 == vs == 때문에 이러한 솔루션에 대해 불평하는 데 사용됩니다.