PHPの$thisの挙動
PHPの場合、スコープ演算子を用いれば、「staticやインスタンスとかでなくとも」外部からメソッドを呼び出せるのだが(そもそもPHP5以前にはstaticとかなかったわけだし多分その名残)、インスタンスから呼び出した場合、$this の挙動があやしいというかなんというか。
これ2つともエラーになってもよさげなのだが。
PHP5.1.4 の場合の動きなので、最新のバージョンだとこうはならないのかな。
[php]<?php
class A {
function a_test() {
echo get_class($this) . ',';
echo $this->namedayo();
}
}
function test(){ echo get_class($this) . ','; echo $this->namedayo(); }
class B { function b_test1(){ A::a_test(); } function b_test2(){ test(); } function namedayo(){ return 'name'; } }
$b = new B(); $b->b_test1(); // echo 'B,name' echo "\n"; $b->b_test2(); // fatal error [/php]