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

时间:2014-04-01 01:31:40

标签: php class namespaces this extend

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。 $这是protected,但由于C正在扩展B,因此不应该导致问题,如果是,则不应该返回该错误。

1 个答案:

答案 0 :(得分:1)

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

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