PHP: изменить атрибут из унаследованного класса - PullRequest
0 голосов
/ 04 февраля 2011

возможно, некоторые из вас используют jpgraph для генерации некоторых диаграмм. Я хочу изменить закрытый атрибут ($ errwidth) из класса jpgraph (ErrorPlot). В большинстве случаев jpgraph предоставляет функцию для установки всех необходимых свойств. Но не в этом случае.

Вот моя попытка:

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 атрибута! Достаточно плохо, чтобы получить эти 2 атрибута, но я не понимаю, почему!?!? Я надеюсь, что вы можете мне помочь!

Стефан

Ответы [ 2 ]

2 голосов
/ 04 февраля 2011

вы хотите, чтобы защищенная не была закрытой.

защищенная функция и переменные могут быть изменены дочерними классами, тогда как закрытые функции и переменные не могут быть изменены, кроме как одним этим классом.

0 голосов
/ 04 февраля 2011

Вы должны посмотреть на Отражение - setAccessible ()

...