web-dev-qa-db-ja.com

何ですか?:in 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はで何をしますか?:in PHP 5.3?

  2. また、匿名関数とはどういう意味ですか?それはしばらく存在していたものではなかったのですか?

82
JasonDavis

こちらをご覧ください:

PHP 5.3であるため、三項演算子の中央部分を省略することができます。式expr1?:expr3は、expr1がTRUEと評価された場合はexpr1を返し、それ以外の場合はexpr3を返します。

匿名関数:いいえ、それらは存在しませんでした 5.3.0以前 (例の下の最初の注意を参照)、少なくともこの方法で:

_function ($arg) { /* func body */ }
_

唯一の方法はcreate_function()でした。これは遅く、非常に面倒で、エラーが発生しやすくなります(関数定義に文字列を使用するため)。

5
Boldewyn