2010-06-09 38 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