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]