2012-07-13 59 views
1

我有A类和B类,其中A类扩展类B.当A类扩展B类,它们都具有相同的属性

他们都有物业$领域,其中$领域是一个数组,像:

类A字段

public $fields = array('id'=>'', 'product'=>'', 'productXpath'=>'', 'price'=>'', 'priceXpath'=>'', 'currency'=>'', 'website_url'=>'', 'url_id'=>'', 'day'=>'', 'month'=>'', 'year'=>'', 'time'=>'', 'status'=>''); 

B类字段

public $fields = array('id'=>'', 'website'=>'', 'visits'=>'', 'plugin_id'=>'', 'status'=>''); 

只有structu re和数组内的值是不同的。

我需要访问这两个属性,我该怎么做?

+0

可以发布您的代码最多可以访问该变量作为即时通讯有点通过此位“只有结构困惑和数组内的值是不同的。“? – 2012-07-13 09:17:26

+2

难道你不能使用'Product'类而不是'array()' – xfix 2012-07-13 09:17:44

回答

4

编辑:

如果你有超过B级控制,简单地定义一个getter和使$fields私人:

public function getFields() { 
    return $this->fields; 
} 

然后在A类你可以这样做:

public function getFields() { 
    $parentFields = parent::getFields(); 
    // Do something with $parentFields 
    return $this->fields; 
} 

如果不是,则必须给A类中的$fields属性赋予不同的名称,以免失去c的值姑娘B.

+0

以及如果B类扩展类C?我如何从C的字段数组? – 2012-07-13 09:18:17

+1

@Laurent:不,你不能http://codepad.org/lk8KaVuG为什么每个人都会投票? :? – KingCrunch 2012-07-13 09:19:09

+0

但如果字段数组在类A中实例化,那么使用继承,他可以根据字段的作用域和修饰符执行$ this->字段。我们需要看到代码完全回答这个问题。 – 2012-07-13 09:20:52

1

使财产作为静态

public static $fields = array(...); 

echo ClassName::$fields; 
+0

什么是类的每个实例具有不同的'$ fields'值?基于他的例子,它看起来像将保存一种数据库行,这意味着每个实例将具有不同的值。 – 2012-07-13 09:25:19

+0

@劳伦特我刚刚给了另一种选择。一切都取决于他必须做的事情 – Federkun 2012-07-13 09:41:39

相关问题