Sì. Tuttavia, si basa su the way PHP implements boolean evaluation e non deve essere considerato un costrutto idiomatico. Funzionerà quasi sicuramente nelle versioni future di PHP, ma vorrei ancora scoraggiare questa sintassi in quanto manca di espressività.
Ecco una breve spiegazione sul perché questa sintassi funziona:
espressioni booleane in PHP hanno la forma:
left_expression BOOLEAN_OPERATOR right_expression;
dove BOOLEAN_OPERATOR
è un logical operator, ||
per esempio.
Poiché le espressioni OR vengono valutate su true non appena uno dei loro operandi viene valutato su true
, l'interprete PHP può interrompere la valutazione non appena trova un operando che valuta true
.
In questo caso, serestituisce true, define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'))
non verrà valutato. Se defined('APPLICATION_PATH')
restituisce false, PHP deve valutare define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'))
.
Così ogni volta,
- l'espressione di sinistra è falsa, il diritto viene valutata.
- l'espressione di sinistra restituisce true, il diritto non viene valutato.
fonte
2010-11-10 20:23:19
Questa è la prima volta che vedo questa sintassi. – Shoe