PHPでは関数の中の関数もトップレベル


「3.2関数の定義」からのメモ。


PHPでは関数の中に関数を定義することができます。しかしその関数はトップレベルの関数となるので、特段使い道はなさそうです。
(隠蔽ができない)

<?php
function outer()
{
  echo "call outer()\n";

  function inner()
  {
    echo "call inner()\n";
  }
}

outer();
inner();
?>
call outer()
call inner()




Rubyも同じく関数内の関数はトップレベルになります。javascriptでは関数内部に定義した関数はトップレベルではなく、隠蔽できますね。
それとPHPでは関数のオーバーロードはサポートされてないようです。ちょっと残念。