Ho una classe per un Template Engine che viene usata come "base" per le altre e ho definito un paio di array. Questi array devono essere gestiti indipendentemente da ogni classe, mentre se modifico l'array tramite la classe pincipale, questo andrà a sovrascrivere quello della classe ereditaria. Faccio un esempio:
Codice PHP:
class A
{
private $a = array();
function edit(array $ary)
{
foreach ($ary as $k => $v)
{
$this->a[$k] => $v;
}
}
# Altri metodi
}
class B extends A
{
# altri metodi
}
$a = new A;
$b = new B;
$b->edit(array(
'TEST' => 'Test A',
));
$a->edit(array(
'TEST_2' => 'Test B',
));
In B c'è un metodo che richiama un metodo di A che fa l'eval() di un codice ed utilizza $this->a['key'] = 'value'; per mostrare i risultati.
Andando a cercare $this->a['TEST'], non ci sono problemi, ma perché $this->a['TEST_2'] non viene visualizzato nell'eval()?
C'è un modo per poter ovviare a questo problema e quindi poter definire per tutte le sotto classi l'array se modificato da A, mentre da B solo per questa?