【发布时间】:2014-05-11 14:21:16
【问题描述】:
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,它不应该引起问题,如果出现问题,也不应该返回该错误。
【问题讨论】:
-
由于
C扩展了B,你不应该实例化B。如果你需要打电话给父母(B)foo(),在C::foo()里面做parent::foo()。 -
@onetrickpony 做 $this->get 会导致错误“在不在对象上下文中使用 $this...”
-
你如何调用你的
C->foo()函数C::foo()? -
@jeroen call_user_func() 实际上
-
@MichaelBerkowski 但我不想访问 foo() 我想基本上从 C 中做 $this->get['id'] 就像在 B 中所做的那样
标签: php class namespaces this extend