2010-06-09 50 views
4

我在WordPress的3類(這個問題本身是無關的話):PHP:類繼承問題「呼籲私有方法......從上下文中......」

class WP_Widget 

class Theme_Widget extends WP_Widget 

class Specific_Widget extends Theme_Widget 

本質Theme_Widget包含了一些擴展函數到基本的WP_Widget。

裏面Specific_Widget我打電話的Theme_Widget的方法之一:

class Specific_Widget { 

    function __construct() { 
     $this->some_method_that_belongs_to_Theme_Widget(); 
    } 
} 

當我實例Specific_Widget,PHP拋出一個致命的錯誤,如下所示:

Fatal error: Call to private method Theme_Widget::some_method_that_belongs_to_Theme_Widget() from context 'Specific_Widget' in ... 

你有一個想法,我怎麼能解決這個?這是我第一次收到來自PHP的這個錯誤。它可以從WordPress本身派生嗎?

回答

3

如果希望子類能夠使用它,則必須聲明方法protected而不是private

+0

所有的方法都被聲明爲「公共」,所以不應該有問題(但無論如何我試圖保護,它也沒有工作)。 – Gal 2010-06-09 15:04:27

+0

@sombe - 你試圖在Theme_Widget中調用的方法被保護 - 而不是私有的。 – jlindenbaum 2010-06-09 15:07:24

+0

@jlindenbaum我說我試過公開和保護,也沒有效果。 – Gal 2010-06-09 15:11:32