同じクラスのメソッド内からクラスのメンバー変数を呼び出そうとしています。
直接呼び出すと機能しません。$this を使用する必要があります。これには理由がありますか?クラスは、私が呼び出している変数がそれに属していることを認識できませんか?
同じクラスのメソッド内からクラスのメンバー変数を呼び出そうとしています。
直接呼び出すと機能しません。$this を使用する必要があります。これには理由がありますか?クラスは、私が呼び出している変数がそれに属していることを認識できませんか?
$ this->は、変数がそれに属していることをクラスが「認識する」方法です。
その理由は、PHPがどのように機能するかという理由だけで多かれ少なかれです。同じスコープ内のメンバーをオーバーライドするローカル変数がない場合、現在のスコープ内のインスタンスメンバーを自動的に使用するJavaに慣れているようです。PHPはあなたにこの自由を与えません:
class x {
private $y = 'r';
public function z() {
$y = 'q';
echo "$this->y\n"; //r
echo "$y"; //q
}
}
Javaでは、クラスメンバー名がローカルでオーバーライドされているためthis.y
、上記の例で印刷するには引き続き使用する必要があります。r
PHPのメンバーがメソッドで常にvoidによってオーバーライドされることを想像してみてください。