__callStatic没有调用我的非静态函数

时间:2012-09-28 13:58:06

标签: php

我认为这会奏效,但事实并非如此。

class Foo {
    public function send($to, $message)
    {
        echo 'sending';
    }
    public static function __callStatic($method, $params)
    {
        return call_user_func_array(array(new static, $method), $params);
    }
}

当我Foo::send('mary','you had a little lamb')时,为什么还在调用Foo::send()而不是new Foo ->send($to, $message)

Non-static method Foo::send() should not be called statically, assuming $this from incompatible context

1 个答案:

答案 0 :(得分:4)

根据manual

  在静态上下文中调用不可访问的方法时会触发

__ callStatic()。

您的方法不可访问,它存在且可访问,它不是静态的。