使用命名空间访问扩展类中的$this


accessing $this in extended class using namespace

B.php:

class B extends A {
    function foo() {
        $this->get['id'];
    }
}

C.php:

namespace NAME;
class C extends B {
    function foo() {
        $b = new 'B();
        $b->get['id'] = $params['userToken'];
    }
}

以上有效,但是如何访问$this而不是创建一个新的B实例?

如果我尝试像这样访问它:

namespace NAME;
class C extends B {
    function foo() {
        $this->get['id'] = $params['userToken'];
    }
}

它返回错误:Using $this when not in object context . $this 是protected但因为它 C 正在扩展 B,它不应该引起问题,如果它这样做,不应该返回该错误。

你的最后一段代码就可以了,但是当你使用 call_user_func() 调用一个使用 $this 的方法时,你需要传递一个实例而不是类名,即

call_user_func([new C, 'foo']);