Sintaxe abreviada do PHP
Pergunta
Acabei de encontrar isto no github.
($config === NULL) and $config = Kohana::config('email');
É o equivalente a
if ($config === NULL) {
$config = Kohana::config('email');
}
Isso é comum? Eu esperaria que outros desenvolvedores olhem para o meu código se eu usasse a primeira maneira de saber instantaneamente o que estava fazendo?
Solução
Levei um segundo para obtê -lo, mas isso deve funcionar em quase todas as linguagens de programação. Como os operadores "e" ou "ou" são avaliados preguiçosamente, se a declaração à esquerda for falsa, não há necessidade de avaliar o restante das declarações, porque toda a expressão sempre será falsa (falsa e verdadeira é falsa). Da mesma forma, você pode fazê -lo com "ou", mas a declaração à esquerda teria que ser verdadeira, então a à direita não ser avaliado.
PS: Nesse caso, não importa que o que está à direita não seja realmente uma expressão booleana; Isso apenas assumirá o valor da verdade de $config
Outras dicas
E é um operador lógico de PHP.
($config === NULL) and $config = Kohana::config('email');
tem resultado equivalente (mas tem um menor operador precedente) para
($config === NULL) && $config = Kohana::config('email');
Pessoalmente, para evitar qualquer confusão, eu usaria sua segunda abordagem.