Нетривиальный синтаксис в PHP, или Головоломки для кодера
Александр Майоров
Каждый профессиональный
программист должен знать все особенности языка, на котором он пишет. Попробуем
разобраться в нестандартных конструкциях PHP и освоить
интересные приемы.
Вместо здравствуйте…
Для того чтобы понять, насколько хорошо вы знаете особенности
языка, попробуйте разобрать и объяснить, что делает нижеприведенный пример.
Думаю, даже опытному программисту не сразу удастся объяснить все конструкции.
<?php
function emp( $data = false ) { return
$data || $data; }($data == true);{; $arr =
array(0,1,2,3,4,-1,-3, 8,4,3,2,1,0,-1); }
function x( $data ) { $data || $data = '123'; return $data; }
define('def456', !!7);
{
$var1 =
$var2 =
$var3 = ~-1;
$x = 'X';
$X[] = (array) 'emp';
{
$var1
= $var2 ? 'abc123' : def456;
$var1
+= true;
} ( $var2
<<= 1 );
} ( $var3 += true );
def456 && $var1 <<= 2;
${$x[0]}[0][0]($var1) || $var1 -=1;
for ($i=$var=0, $sizeof=sizeof($arr);
$i<$count,$arr[$i]<5; $i++,++$var);
{
$ =
~(int) $var1 .= $var;
}
$var = ~x(--$ );
var_dump($var);
?>
|