2013-04-18 14 views
16

Wpadłem dzisiaj na interesujący kod. Próbowałem dowiedzieć się, czy jest to funkcja PHP lub jeśli czegoś brakuje, ale nie udało mi się znaleźć niczego w Google. Prawdopodobnie dlatego, że nie znam jego nazwy.Ustaw zmienną w wyrażeniu instrukcji if

Kod

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

Zmienna $logo nie jest ustawiony jest nigdzie indziej. Wygląda na to, że wyrażenie w tej instrukcji if sprawdza, czy ta metoda klasy zwraca coś i jednocześnie ustawia zmienną, która ma być użyta w instrukcji.

Czy to prawda? Jeśli tak, to co na świecie jest to nazywane!?!

+2

najpierw przydziela, a następnie ocenia zwracaną wartość przypisania, która jest przypisanym wynikiem. – bwoebi

Odpowiedz

16

Możesz wykonać takie zadanie w trybie warunkowym. Logiczne jest, że wartość jest przypisana do $logo, a następnie $logo jest oceniane pod kątem tego, czy jest to prawda. Jeśli jest to prawda, kod warunkowy jest wykonywany.

Często będziecie widzieli ten rodzaj przypisania/oceny w przypadku pętli w zestawach wyników bazy danych, ale generalnie sugerowałbym, aby unikać tego poza zwykłym przypadkiem użycia ze względu na przejrzystość odczytu g-kodu.

+0

Tak myślałem, ale nie mogę znaleźć żadnej oficjalnej dokumentacji na ten temat. Czy jest na to nazwa? Chcę przeczytać dokumenty na ten temat. –

+1

@ChrisB: Tak działa operator przypisania. Zwraca przypisaną wartość. Dokumenty: http://php.net/manual/en/language.operators.assignment.php –

+0

@RocketHazmat Domyślam się, że po prostu nie wiedziałem, że możesz to zrobić w wyrażeniu if: –

1

Tak, jest to funkcja. To jak:

$a=$b=5;

Ale w tym przypadku, wyobrazić wynik bool na razie jako var $ a.

Jednak IDE są używane do narzekań na takie rozwiązania z powodu == vs. = jako bardzo powszechnego możliwego źródła błędu.