2011-08-14 8 views
0

どのようにして他のクラスのテーブルをオーバーライドし、最初のAndに3つのフィールドを表示できますか?配列とオーバーライド(グローバル配列なし)

<?php 

class A { 
    public $tab = array(); 

    public function wyswietl() { 
    $this->tab['id'] = '1'; 
    foreach ($this->tab as $key => $value) { 
     print $key .' = '. $value; 
    } 
    } 
} 

class B { 
    public function dodajB() { 
    $this->tab['desc'] = 'descriptions'; 
    } 
} 

class C 
{ 
    public function dodajC() { 
    $this->tab['name'] = 'names'; 
    } 
} 

$ob = new A; 

$ob2 = new B; 
$ob2->dodajB(); 

$ob3 = new C; 
$ob3->dodajC(); 

$ob->wyswietl(); 

?> 
+0

我々はあなたが求めているものを明確に理解を持っているように、あなたの疑問を改善してください。その時まで、私は閉会することにしています。 –

答えて

0

OBがあなたがそれを作るために必要となるすべての3つの列を取得するには、クラスAのオブジェクトとして定義されますCからCへの拡張はAから拡張されています。また、__construct関数を使ってオブジェクトを構築することをお勧めします。また、これを使用してクラス1を参照するのではなく、タブのローカル変数を参照していました。

は、上記のすべてを行い、それ以下のコードを参照してください:

<?php 

class A 
{ 
    public $tab = array(); 

    public function __construct() 
    { 
     $this->tab['id'] = '1'; 
    } 

    public function wyswietl() 
    { 
     foreach ($this->tab as $key => $value) 
     { 
      print $key .' = '. $value . "\n"; 
     } 
    } 
} 

class B extends A 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->tab['desc'] = 'descriptions'; 
    } 
} 

class C extends B 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->tab['name'] = 'names'; 
    } 
} 

$ob = new A; 

$ob2 = new B; 
$ob3 = new C; 

echo 'A: '; 
$ob->wyswietl(); 
echo "\n\n"; 

echo 'B: '; 
$ob2->wyswietl(); 
echo "\n\n"; 

echo 'C: '; 
$ob3->wyswietl(); 
echo "\n\n"; 

?> 
0

あなたは疑問だが紛らわしいですが、私はあなたが探していると思う:

class B extends A { 
    public function dodajB(){ 
     $this->tab['desc'] = 'descriptions'; 
    } 
} 

class C extends B { 
    ... 
+0

別のサンプルをください – xyz

+0

@xyzわかりやすく投稿を更新しました – Paulpro

+0

同じ効果 – xyz