次のコードを検討してください。
class Manager{
function a(){
$var1 = 10;
$var2 = 20;
var_dump($var1 * $var2);
echo "<br> var1=" . $var1 . "<br>";
echo "var2=" . $var2;
}
}
class Sub extends Manager{
function a(){
$var1 = 20;
parent::a();
}
}
$s = new Sub();
$s->a();
$var1ここでは、 fromの値をオーバーライドしSub::a()て親関数を呼び出し、Manager::a()php が結果を(20 x 20)として設定$var1=20および表示することを期待しています。400しかし、うまくいかないようです。$var1はまだ に等しい10です。
関数のローカル変数をオーバーライドできる php の関数を部分的にオーバーライドする方法があるかどうか疑問に思っていますか? 400具体的には、このコードでは、現在のではなく、どうすれば抜け出すことができ200ますか?
[編集]
これSubは単なる例です。 、などSub1の複数の子クラスがあります。したがって、各サブクラスは、次のように に異なる値を設定しようとします。Sub2Sub3$value1
class Sub1 extends Manager{
function a(){
$var1 = 20;
parent::a();
}
}
class Sub2 extends Manager{
function a(){
$var1 = 99;
parent::a();
}
}
class Sub3 extends Manager{
function a(){
$var1 = 50;
parent::a();
}
}