以前にこの質問をされたことがある場合は失礼しますが、検索してみましたが、満足のいく結果は得られませんでした。
私はPHP(C ++のバックグラウンドから来ています)を学んでいて、次のあいまいさに遭遇しました。次の2ビットのコードはまったく同じように機能します。
class A
{
public $myInteger;
public function __get($name)
{
return $this->$name;
}
public function __set($name, $value)
{
$this->$name = $value;
}
}
と
class A
{
public $myInteger;
public function __get($name)
{
return $this->name;
}
public function __set($name, $value)
{
$this->name = $value;
}
}
つまり、クラスメソッド内にあり、まったく同じ機能$this->$name
を持っています。$this->name
これは少し紛らわしいと思います。特に、次のコードを追加すると、
$myA = new A();
$myA->myInteger = 5;
$hereInt = $myA->myInteger;
echo "<p>" . $hereInt . "</p>";
beforeがない場合にのみ機能します。誰かがこの背後にある理論的根拠を説明できますか?$
myInteger