Portál AbcLinuxu, 5. listopadu 2025 02:26
Poradí někdo jak to opravit? Děkuji pěkně.
class Class1 {
public function set($key, $value){
$this->data[$key] = $value;
}
public function get($key){
return $this->data[$key];
}
}
class Class2 {
function __construct($obj1){
$array['aaa']['foo1'] = 'foo1';
$array['aaa']['foo2'] = 'foo2';
$array['aaa']['foo3'] = 'foo3';
$obj1->set('aaa', $array);
}
}
class Class3 {
function __construct($obj1){
$array['aaa']['bar1'] = 'bar1';
$array['aaa']['bar2'] = 'bar2';
$array['aaa']['bar3'] = 'bar3';
$obj1->set('aaa', $array);
}
}
$obj1 = new Class1();
$obj2 = new Class2($obj1);
$obj3 = new Class3($obj1);
var_dump($obj1->get('aaa'));
Výsledek: array(1) { ["aaa"]=> array(3) { ["bar1"]=> string(4) "bar1" ["bar2"]=> string(4) "bar2" ["bar3"]=> string(4) "bar3" } }
var_export($obj1->get('aaa'));
Výsledek: array ( 'aaa' => array ( 'bar1' => 'bar1', 'bar2' => 'bar2', 'bar3' => 'bar3', ), )
get a set, ale __get a __set.
Jinak celé je to úplně zmatené. Ve třídě Class1 chybí deklarace pole $this->data, konstruktor Class2 pracuje s nějakým neznámým polem $array. To pole v $obj1 se prostě přepíše novými hodnotami.
function __construct($obj1){
$array['aaa']['bar1'] = 'bar1';
$array['aaa']['bar2'] = 'bar2';
$array['aaa']['bar3'] = 'bar3';
$obj1->set('aaa', $array);
}
fungovalo by
function __construct($obj1){
$array['bbb']['bar1'] = 'bar1';
$array['bbb']['bar2'] = 'bar2';
$array['bbb']['bar3'] = 'bar3';
$obj1->set('bbb', $array);
}
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.