0

親と拡張の 2 つのクラスがあります。拡張クラスでメイン変数を使用する必要があります。例えば

class parentClass
{
    $this->value = null
    function __construct()
    {
        echo "im parent" ;
    }

}
class childClass extends parentClass
{

    function sayIt()
    {
        var_dump($this->value);
    }
}

$p = new parentClass ; 
$p->value = 500 ; 

$c = new childClass ; 
$c->sayIt(); // this output null ! i want it to output 500 , how i can do that

ありがとう

4

3 に答える 3

2

それは継承が機能する方法ではありません。childClassは親クラスに自動的に接続されるのではなく、から継承するだけで、親からparentClassすべてのパブリックおよび保護された変数/メソッドを継承するだけです。親のインスタンスには接続されていません。

500 を出力したい場合は、何らかの方法で子クラスのインスタンスに割り当てる必要があります。

$c = new childClass ; 
$c->value = 500;
$c->sayIt()

すべてのクラスとインスタンス間で変数を共有する必要がある場合は、変数を使用できstaticます。

于 2013-01-06T01:24:19.530 に答える
1

悪い 悪い 悪い このコードは厳密に教育目的のためのものです。オブジェクト指向プログラミングの基本原則に関する本を入手することをお勧めします。

変数を静的にすると、子クラスを介してアクセスできるようになります

class parentClass {
    public static $value = null;

    function __construct() {
        echo "patent called";
    }
}
class childClass extends parentClass {

    function sayIt() {
        var_dump(self::$value);
    }
}

$p = new parentClass();
parentClass::$value = 500;

$c = new childClass();
$c->sayIt();
于 2013-01-06T01:30:12.517 に答える
0

クラスの構成と参照を混同しています。

$p親クラスのインスタンスです。

$c子クラスのインスタンスです。

彼らはデータを共有しません。

于 2013-01-06T01:24:55.407 に答える