phpのfunctionに関して。


先にfunctionで定義した関数を上書きはできないのでしょうか?
function a() {
$hoge = "a";
return $hoge
}

function a() {
$hoge = "b";
return $hoge
}

a();//bが出て欲しい

同じ関数名で再度定義すると下記エラーが出ることは前々から承知はしているのですが、事情があって関数名を変えられません。
「Fatal error: Cannot redeclare」

回答の条件
  • 1人2回まで
  • 登録:2009/11/18 12:00:35
  • 終了:2009/11/25 12:05:02

ベストアンサー

id:standard_one No.3

standard_one回答回数252ベストアンサー獲得回数232009/11/19 10:44:26

ポイント40pt

事情がどういうものか、どの程度の縛りがあるのかを詳しく教えていただかないと判断の付かない部分もありますが、可変関数でどうにかなりませんか?

function func1()

{

echo "1";

}

function func2()

{

echo "2";

}

$a = NULL;

$b=1;

if($b){

$a="func1";

}else{

$a="func2";

}

$a(); // 呼び出す部分は常にこう

?>

id:php-beginner

可変関数という物を始めて知りました!

こういう方法があるんですね。

2009/11/19 11:08:20

その他の回答(2件)

id:goog20090901 No.1

goog20090901回答回数637ベストアンサー獲得回数172009/11/18 12:32:14

ポイント14pt

コメントアウトする

id:php-beginner

上書きをしたいのです。

事情があり既存の関数には手を加える事ができません。

2009/11/18 14:35:30
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402009/11/18 15:21:13

ポイント26pt

PHP: runkit_function_redefine - Manual

標準ではないけど、出来無くはないようだね。

もちろんあまり好ましい方法ではないが。

id:php-beginner

やはり標準では難しいですかね・・・。

2009/11/18 15:28:42
id:standard_one No.3

standard_one回答回数252ベストアンサー獲得回数232009/11/19 10:44:26ここでベストアンサー

ポイント40pt

事情がどういうものか、どの程度の縛りがあるのかを詳しく教えていただかないと判断の付かない部分もありますが、可変関数でどうにかなりませんか?

function func1()

{

echo "1";

}

function func2()

{

echo "2";

}

$a = NULL;

$b=1;

if($b){

$a="func1";

}else{

$a="func2";

}

$a(); // 呼び出す部分は常にこう

?>

id:php-beginner

可変関数という物を始めて知りました!

こういう方法があるんですね。

2009/11/19 11:08:20
  • id:GEN111
    標準では無理だと思う。

    http://www.php.net/manual/ja/functions.user-defined.php
    > PHP は関数のオーバーロードをサポートしていません。 また、宣言された関数の定義を取り消したり再定義することも できません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません