Что такое?: В PHP 5.3?

Возможный дубликат. Каковы операторы PHP «?» И «:», и что они делают?

С сайта http://twitto.org/

<?PHP require __DIR__.'/c.php'; if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; })) throw new Exception('Error'); $c(); ?> 

Twitto использует несколько новых функций, доступных на PHP 5.3:

  1. Постоянная DIR
  2. Оператор
  3. Анонимные функции

  1. Что делает номер 2 с ?: В PHP 5.3?

  2. Кроме того, что они подразумевают под анонимными функциями? Разве это не то, что существовало какое-то время?

Solutions Collecting From Web of "Что такое?: В PHP 5.3?"

?: – форма условного оператора, которая ранее была доступна только как:

 expr ? val_if_true : val_if_false 

В 5.3 можно исключить среднюю часть, например expr ?: val_if_false которая эквивалентна:

 expr ? expr : val_if_false 

Из руководства :

Начиная с PHP 5.3, можно исключить среднюю часть условного оператора. Expression expr1 ?: expr3 возвращает expr1 если expr1 значение TRUE и expr3 противном случае.

Оператор ?: – условный оператор (часто называемый тройным оператором):

Выражение (expr1) ? (expr2) : (expr3) (expr1) ? (expr2) : (expr3) вычисляется как expr2 если expr1 значение TRUE и expr3 если expr1 оценивается как FALSE .

В случае:

 expr1 ?: expr2 

Выражение оценивается значением expr1 если expr1 истинно и expr2 противном случае:

Начиная с PHP 5.3, можно исключить среднюю часть тернарного оператора. Expression expr1 ?: expr3 возвращает expr1 если expr1 значение TRUE и expr3 противном случае.

Смотри сюда:

Начиная с PHP 5.3, можно исключить среднюю часть тернарного оператора. Expression expr1?: Expr3 возвращает expr1, если expr1 имеет значение TRUE и expr3 в противном случае.

Анонимные функции: Нет, они не существовали до 5.3.0 (см. Первую заметку ниже примеров), по крайней мере таким образом:

 function ($arg) { /* func body */ } 

Единственный способ – create_function() , который медленнее, довольно громоздкий и подвержен ошибкам (из-за использования строк для определения функций).