0

拡張されたクラスに var を設定して、基本クラスから使用することは可能ですか?

例えば:

class me
{
    public $hello = array();

    protected function setter($me)
    {
        $this->hello[] = $me;
    }
}

class foo extends me
{
    public function __construct()
    {
        $this->setter('foo');
    }
}

class yoo extends me
{
    public function __construct()
    {
        parent::setter('yoo');
    }
}

$me = new me();
$foo = new foo();
$yoo = new yoo();

print_r($me->hello);

出力される配列は array() です。何も設定されていません。

4

2 に答える 2

1

$hello はい、静的にすることでこれを行うことができます:

public static $hello = array();

その際、現在のオブジェクトインスタンスに固有ではなくなるため、 $thisfromを削除して、$this->hello[] = $me;に置き換える必要があります。selfhello

self::$hello[] = $me;
于 2012-05-29T00:59:06.427 に答える
0

あなたが使っていた

parent::setter('yoo');

しかし、親クラス me では、その関数は static として定義されていません。したがって、:: を使用して非静的関数を呼び出すことはできません。

于 2012-05-29T02:45:30.463 に答える