2014-04-01 76 views
0

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']; 
    } 
} 

上述作品,但如何我訪問的這個,而不是創建一個新的實例$ B

如果我試圖訪問它像這樣:

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

它會返回錯誤:Using $this when not in object context。 $這是protected,但因爲它是C擴展B它不應該引起問題,如果它確實,不應該返回該錯誤。

+0

由於'C'延伸'乙'你不應該實例化'B'。如果你需要調用父類(B)'foo()',在C :: foo()'裏面執行'parent :: foo()'。 –

+0

@onetrickpony做$ this-> get導致錯誤'使用$ this當不在對象上下文中...' – Rudiger

+0

你是怎麼調用你的'C-> foo()'函數,'C :: foo()'? – jeroen

回答

1

你的代碼的最後一塊將工作,但是當你用call_user_func()調用使用$this你需要通過一個實例,而不是類名的方法,即

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

對不發佈call_user_func(),代碼是別人的,並不認爲它影響它,但它現在有意義。乾杯。 – Rudiger