以下は、静的メソッドと非静的メソッドである php クラス コードの例です。
例 1:
class A{
//None Static method
function foo(){
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")<br>";
} else {
echo "\$this is not defined.<br>";
}
}
}
$a = new A();
$a->foo();
A::foo();
//result
$this is defined (A)
$this is not defined.
例 2:
class A{
//Static Method
static function foo(){
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")<br>\n";
} else {
echo "\$this is not defined.<br>\n";
}
}
}
$a = new A();
$a->foo();
A::foo();
//result
$this is not defined.
$this is not defined.
これら2つのクラスの違いは何かを理解しようとしています。
none static メソッドの結果からわかるように、「$this」が定義されています。
しかし一方で、静的メソッドの結果は、両方ともインスタンス化されていても定義されていませんでした。
両方ともインスタンス化されているのに、なぜ結果が異なるのでしょうか?
これらのコードで何が起こっているか教えてください。