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

YuGo yu.gotou @ gtec-ni.com
2007年 2月 28日 (水) 12:45:51 JST


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 メーリングリストの案内