クラスで定義されていないコンストラクタ関数でプロパティを使用できる理由は、以下のコードをお読みください。PHPのコンストラクタ関数との混同
<?php
class TV
{
public function __construct($m, $v)
{
$this->model = $m;
$this->volume = $v;
}
}
$tv_one = new TV("Samsung", 6);
echo $tv_one->model."<br><br>";
echo $tv_one->volume;
?>
このコードもご覧ください。私はクラスの外で私有財産を共有することができます。ちょうどこのコードに行きます。
<?php
class TV
{
private $model = "Samsung";
private $volume = 2;
public function volumeUp()
{
return $this->volume++;
}
public function volumeDown()
{
return $this->volume--;
}
public function __construct($m, $v)
{
$this->model = $m;
$this->volume = $v;
}
}
class PlasmaTv extends TV
{
public $plasma = true;
public function hello()
{
return "I am new " . $this->model . " and my default volume is " . $this->volume . ".";
}
public function __construct($m, $v, $p)
{
$this->model = $m;
$this->volume = $v;
$this->plasma = $p;
}
}
$plasma = new PlasmaTv("Soni", 6, true);
echo $plasma->model."<br><br>";
echo $plasma->volume."<br><br>";
echo $plasma->plasma;
echo $plasma->hello();
?>
最初の例はわかります。 PHPは動的言語ですので、選択した場合は動的にプロパティを定義できます。デフォルトでは公開されています。なぜあなたはクラスの外からアクセスできるのかを説明します。 – arkascha
2番目の例では、これらの2つのプロパティは、 'TV'クラスでプライベートとして宣言されています。つまり、クラス「PlasmaTV」はそれらを見ることができません。したがって、 '$ this-> model'は動的に作成されたプロパティにアクセスすることができます。 – arkascha