親コンストラクターでプライベート属性の値を設定し、子のコンストラクターまたはメソッドで値を呼び出すことができるようにしたいと考えています。
例えば:
<?php
abstract class MainClass
{
private $prop_1;
private $prop_2;
function __construct()
{
$this->prop_2 = 'this is the "prop_2" property';
}
}
class SubClass extends MainClass
{
function __construct()
{
parent::__construct();
$this->prop_1 = 'this is the "prop_1" property';
}
public function GetBothProperties()
{
return array($this->prop_1, $this->prop_2);
}
}
$subclass = new SubClass();
print_r($subclass->GetBothProperties());
?>
出力:
Array
(
[0] => this is the "prop_1" property
[1] =>
)
ただし、に変更prop_2
するprotected
と、出力は次のようになります。
Array
(
[0] => this is the "prop_1" property
[1] => this is the "prop_2" property
)
私はオブジェクト指向と php の基本的なprop_2
知識を持っていますが、それがprivate
; 「prop_1」はプライベートであり、呼び出して表示できるため、プライベート/パブリック/保護の問題になることはありません...そうですか?
子クラスと親クラスの値の割り当ての問題ですか?
理由を理解するための助けをいただければ幸いです。
ありがとうございました。