関数内関数?

Delphiでは関数内関数が使えるのでPHPでも使えるもんだと思ってました...(Cで使えないのすっかり忘れてた)

そう思ってたのは、PHPでは関数内で関数を定義することが出来るからです。
が、そうして定義した関数はローカルスコープではなくグローバル関数になります。

function super()
{
    function inner()
    {
    }
}


この場合、super()をコールされて初めてinner()が定義されることになります。
気をつけなきゃいけないのは、inner()はグローバルなので、super()を2回コールすると定義が多重になってエラーを吐いてしまいます。
function_exists()を使えば多重定義は回避できますが...別の関数の中で別の処理を持つinner()が書けません。
これじゃなんか関数内で関数が書ける意味がわかりません、使ってる人いるの?

クラスのメンバ関数内で関数を書いてもグローバル関数になったりします。なんだこりゃ。

TrackBack URI : http://reharmonize.net/200501/108/trackback

One Response to “関数内関数?”

  1. wh0cd417914 fml forte online

Leave a Reply