2013-04-18 18 views
16

Ho trovato un codice interessante oggi. Ho cercato di scoprire se questa è una funzionalità di PHP o se mi manca qualcosa, ma non sono riuscito a trovare nulla su Google. Probabilmente perché non conosco il nome.Imposta variabile in espressione espressione

Codice

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

La variabile $logo non è stato impostato in qualsiasi altro luogo. Sembra che l'espressione in questa istruzione if stia verificando se il metodo di quella classe restituisce qualcosa e contemporaneamente imposta la variabile $logo da utilizzare nell'istruzione.

È vero? Se è così, come si chiama questo!?!

+2

prima assegna, quindi valuta il valore di ritorno dell'assegnazione che è il risultato assegnato. – bwoebi

risposta

16

È possibile eseguire un compito del genere in modo condizionale. Quello che è accaduto logicamente è che il valore è assegnato a $logo e quindi $logo viene valutato se è vero. Se è vero, il codice nell'esecuzione condizionale.

Spesso si vedrà questo tipo di assegnazione/valutazione nel caso di looping attraverso set di risultati del database, ma in generale suggerirei che dovrebbe essere evitato al di fuori di un caso d'uso comune per motivi di chiarezza nella lettura del codice g.

+0

Questo è quello che pensavo, ma non riesco a trovare alcuna documentazione ufficiale su di esso. C'è un nome per questo? Voglio leggere i documenti a riguardo. –

+1

@ Chris: È proprio come funziona l'operatore di assegnazione. Restituisce il valore assegnato. Documenti: http://php.net/manual/en/language.operators.assignment.php –

+0

@RocketHazmat Immagino che non sapessi che potresti farlo all'interno dell'espressione di un'istruzione if –

1

Sì, questa è una funzionalità. E 'come:

$a=$b=5;

Ma in questo caso, immaginare il risultato bool di se come var $ a.

Tuttavia, gli IDE vengono utilizzati per lamentarsi di soluzioni come questa a causa di == vs. = come una fonte di errore molto comune possibile.