Strict エラーになりますが・・・継承関係がないのに A のメソッドで $this
が B のインスタンスになっている(PHP 5.2~5.5で確認)。
<?php
error_reporting(E_ALL & ~E_STRICT);
class A
{
public function func()
{
var_dump(__METHOD__);
$this->xxxx();
}
}
class B
{
public function func()
{
var_dump(__METHOD__);
A::func();
}
public function xxxx()
{
var_dump(__METHOD__);
}
}
$o = new B();
$o->func();
string(7) "B::func"
string(7) "A::func"
string(7) "B::xxxx"
call_user_func('A::func')
だと Fatal error: Using $this when not in object context
で死ぬ。