[PHP-users 31590] Re: 関数の多重定義を行っても実行可能にする方法

小野浩一郎 k-ono @ mica.co.jp
2007年 2月 28日 (水) 13:35:17 JST


At 28 Feb 2007 13:07:21 +0900 Satoshi Kanno wrote:
> 菅野です。
> 
> > 逆にお聞きしたいのですが、二つの同一名関数のどちらが実行されるのですか?
> 
> 動作を見ると、下記のソースコードで言う
> lib1.php の関数が実行されているようです。
> 
> 
> 
> YuGo wrote:
> > YuGoと申します。
> > エラーなしで実行させるのは難しそうです。
> > 逆にお聞きしたいのですが、二つの同一名関数のどちらが実行されるのですか?
> > 
> > Satoshi Kanno wrote:
> >> 菅野と申します。
> >> よろしくお願い致します。
> >>
> >>
> >> 関数の多重定義に関してなのですが、
> >> ソースコードを見ると確かに同じ名前の関数が二重に定義されているのに、
> >> エラーも発生せず、プログラムが実行できている、ということが発生しています。
> >>
> >> ちょっとそのソースコード自体を載せるわけにはいかないため、
> >> 以下に、できるだけ再現したソースコードを示します。
> >>
> >> main.php ---
> >> <?
> >> require_once('lib1.php');
> >> require_once('common.php');
> >>
> >> function main() {
> >>     redeclare_function();
> >>     echo 'executed.';
> >> }
> >>
> >> main();
> >> ?>
> >> ---
> >>
> >> common.php ---
> >> <?
> >> require_once('lib2.php');
> >> ?>
> >> ---
> >>
> >> lib1.php ---
> >> <?
> >> function redeclare_function() {
> >> // 二重定義関数その1
> >> }
> >> ?>
> >> ---
> >>
> >> lib2.php ---
> >> <?
> >> function redeclare_function() {
> >> // 二重定義関数その2
> >> }
> >> ?>
> >> ---
> >>
> >> 以上の状態でも、実行結果が出てしまいます。
> >>
> >> いくつか同じソースコードを持つマシンがあり、
> >>   Fatal error: Cannot redeclare ...
> >> とエラーが出るものもあります。
> >> (普通はこう出ると思うのですが・・・)
> >>
> >>
> >> 何か、関数の二重定義を行っても
> >> エラーを出さず、実行結果も出すことが可能な方法などあるでしょうか?
> >> (PHP の設定など)
> >>
> >> ご存知の方いらっしゃいましたらご教示ください。
> >> よろしくお願い致します。
> >>
> >>
> > _______________________________________________
> > PHP-users mailing list  PHP-users @ php.gr.jp
> > http://ml.php.gr.jp/mailman/listinfo/php-users
> > PHP初心者のためのページ - 質問する前にはこちらをお読みください
> > http://www.php.gr.jp/php/novice.php3
> > 
> > 
> > 
> 
> -- 
> 菅野 聡 satoshi kanno
> kanno @ connect-tech.co.jp
> 株式会社 コネクトテクノロジーズ 札幌支社 UX事業グループ
> 
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
> 




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