PHP6でgoto文らしいですが
PHP6でgoto文が追加されることに関してDo You PHP?で扱っているのでふと使い道を考えてみた。
結果、3秒で思い当たったのがOpenCVの__BEGIN__,__END__。 こいつらはマクロでして、OpenCVについて語ってもしょうがない*1ので細かいことは割愛しますが
#define __BEGIN__ { #define __END__ goto exit; exit: ; } #define __CLEANUP__ #define EXIT goto exit
ってな定義になっていてエラーが発生したときなんかにEXITするとブロックの外に行く仕組み。
そして、ブロックのそとでメモリ開放などの後処理をする。これで必ずメモリ開放される。…ということらしいです。例外処理(try catch finally)がないから苦肉の策でって感じですかね。
Cの話だけだとPHPerらしさに欠けるので、PHPでのgoto文の使い道を考えてみました。2つのDBに接続してアーダコーダで片方は必ずcommitとか。。ないかな?
少しは参考に・・・・・・なりませんね。
冗談抜きで、使わなければいけない場面が分からない。。。