次のコードを検討してください。
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
の複数の子クラスがあります。したがって、各サブクラスは、次のように に異なる値を設定しようとします。Sub2
Sub3
$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();
}
}