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

Satoshi Kanno kanno @ connect-tech.co.jp
2007年 2月 28日 (水) 11:05:38 JST


菅野と申します。
よろしくお願い致します。


関数の多重定義に関してなのですが、
ソースコードを見ると確かに同じ名前の関数が二重に定義されているのに、
エラーも発生せず、プログラムが実行できている、ということが発生しています。

ちょっとそのソースコード自体を載せるわけにはいかないため、
以下に、できるだけ再現したソースコードを示します。

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 の設定など)

ご存知の方いらっしゃいましたらご教示ください。
よろしくお願い致します。


-- 
菅野 聡 satoshi kanno
kanno @ connect-tech.co.jp
株式会社 コネクトテクノロジーズ 札幌支社 UX事業グループ



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