Я только что загрузил старые файлы PHP на новый сервер и получаю ошибки синтаксического анализа (Unexpected ':') в сокращенных тройных операциях. например:
$y = $x ?: "Some default";
Версия php – 5.2.16. Код усеян этими сокращениями?:, поэтому, прежде чем менять их, я думал, что увижу, знает ли кто-нибудь об этом, поскольку я не использовал PHP некоторое время.
Это доступно только с PHP 5.3
Выражение (expr1)? (expr2): (expr3) вычисляется как expr2, если expr1 имеет значение TRUE и expr3, если expr1 оценивается как FALSE .
Начиная с PHP 5.3, можно исключить среднюю часть тернарного оператора. Expression expr1?: Expr3 возвращает expr1, если expr1 имеет значение TRUE и expr3 в противном случае. 1
См. Этот пример для большего контекста.
или более полезно, но заметьте в комментариях: http://www.php.net/manual/en/control-structures.if.php#102060
1 http://php.net/manual/en/language.operators.comparison.php
Поскольку вы используете php 5.2.16, ваш троянец требует 2 варианта, например
$y = $x? "???" : "Some default";
Переменная = условие? истинное значение: ложное значение;