• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:抽象クラスを継承した普通のクラスから、)

抽象クラスを継承した普通のクラスでデータをセット&ゲットする方法

このQ&Aのポイント
  • 抽象クラスを継承した普通のクラスで、抽象クラス内でprotected宣言したフィールド(連想配列)へデータをセット&ゲットする方法が分からない。
  • 簡単なサンプルコードを作成してほしい。
  • 自分で試したが、うまくいかなかった。以下はイメージの例。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

派生クラスから基底クラスのprotectedメンバに対しては普通に自分のメンバとしてアクセスできるので、とくに何も意識することはありません。 class C1 extends A1{ public function main(){ $this->data["num3"] = "456"; $this->data["alph3"] = "lmn"; print $this->data["num3"]."<br>"; print $this->data["alph3"]."<br>"; } }

re999
質問者

お礼

ありがとうございました。

その他の回答 (1)

回答No.1

abstract class A1{ protected $data = array(); public function get($key) { return($this->data[$key]); } public function set($value, $key) { $this->data[$key] = $value; } } class C1 extends A1{ private $test_data = array( array("value"=>"123", "key"=>"num1"), array("value"=>"abc", "key"=>"alph1"), array("value"=>"890", "key"=>"num2"), array("value"=>"xyz", "key"=>"alph2") ); public function main(){ foreach($this->test_data as $temp) { $this->set($temp["value"], $temp["key"]); print "set \"".$temp["key"]."\"=>\"".$temp["value"]."\"<br>"; } print $this->get("num1")."<br>"; print $this->get("num2")."<br>"; print $this->get("alph1")."<br>"; print $this->get("alph2")."<br>"; } } $c1 = new C1; $c1->main();

re999
質問者

補足

サンプル作成いただき、ありがとうございます。 ちなみに、このサンプルで、 C1クラスの$test_dataではなくA1クラスの $dataへ、 C1クラスのmain関数からデータ(連想配列)をセットするには、 どう書けばよいでしょうか?

関連するQ&A

専門家に質問してみよう