PHP:从继承的类更改属性

时间:2011-02-04 08:56:15

标签: php class inheritance private

也许有些人使用jpgraph来生成一些图表。我想从jpgraph-class(ErrorPlot)更改private属性($ errwidth)。在大多数情况下,jpgraph提供了一个设置所有nessesary属性的函数。但不是在这种情况下。

我的尝试:

class ErrorPlot extends Plot { 
  // Original class
  private $errwidth=2; 
  ...
}

class SpecialErrorPlot extends ErrorPlot { 
  // "Extension" to modify the attribute
  function SetErrWidth( $w ){
    $this->errwidth = $w;
  }
}

$chart_obj = new SpecialErrorPlot( array(1,2,3,4,5,6) );
$chart_obj->SetErrWidth(10);


SpecialErrorPlot Object (
  [errwidth:private] => 2
  ...
  [errwidth] => 10
)

结果:2个属性!很难得到这两个属性,但我不明白为什么!?!?我希望你能帮助我!

Stefan

2 个答案:

答案 0 :(得分:2)

你想要保护而不是私人。

受保护的函数和变量可以由子类修改,而私有函数和变量除了单独的类外,不能修改。

答案 1 :(得分:0)

你应该看一下反思 - setAccessible()