[PHP-users 25762] 関数内関数の正しい定義方法

Yusuke ITO ito_yusuke @ white.livedoor.com
2005年 6月 9日 (木) 17:11:07 JST


伊東です。いつもお世話になっております。

公式サイトのマニュアルに載っている、関数内関数ですが…
http://www.php.net/manual/ja/language.functions.php#AEN4977

以下のスクリプトを作成し(/home/www/hoge.phpとしましょう)、

<?php
  function foo(){
    function bar(){
      echo('bar<br>');
    }
    bar();
  }

  foo(); // ←1回目
  foo(); // ←2回目
?>

呼び出しますと

bar   ←1回目の出力

Fatal error: Cannot redeclare bar() (previously declared in /home/www/hoge.php:4) in /home/www/hoge.php on line 3

となって、外側の関数を2回呼ぶことで再定義エラーとなってしまいます。

これだと全然使えないのですが…
回避方法をご存じの方、いらっしゃいませんか?
#関数を外に出すのはナシでw

環境は
 Linux(Fedora Core)+Apache+PHP4.3.10
とか
 Windows+AN httpd+PHP4.3.11
とか、いくつか試して同じ現象です。

動作的には「バグ!」とまでは言いませんが…
イマイチ役に立たないなぁ…と。
#公式サンプルなのに。

--
伊東 祐介
ito_yusuke @ white.livedoor.com




-----------------------------------------------
2GBまでメールや画像など貯め放題!さらに特典いっぱい♪
livedoor ギガメーラープラス 【新登場】
http://gigamailerplus.livedoor.com/



PHP-users メーリングリストの案内