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

Satoshi Kanno kanno @ connect-tech.co.jp
2007年 2月 28日 (水) 13:07:21 JST


菅野です。

> 逆にお聞きしたいのですが、二つの同一名関数のどちらが実行されるのですか?

動作を見ると、下記のソースコードで言う
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 メーリングリストの案内