

PHP - Dotaz ohledně třídy
Ahoj, procházím různé návody a potřeboval bych poradit ohledně tříd.
class Data {
private $data=array();
public function __construct()
{
$this->data->foo='bar';
}
public function __set($k,$v){
$this->data[$k]=$v;
}
public function __get($k){
return $this->data[$k];
}
}
$data = new Data();
echo $data->foo; //tohle by mělo vypsat bar
V tom konstruktu je nastavená proměnná 'foo' na hodnotu 'bar', ale když ji zavolám, nic se nevypíše. Poradí někdo ? Děkuji
Keby si mal zapnuté vypisovanie varovaní, tak by si videl, že to hlási:
Bude to fungovať, keď nahradíš ten riadok 7 za:
alebo:
Děkuji,
a když použiju
bude to uloženo kde, taky v té proměnné $data ?
PS:
proč je tam private, když ta data mimo tu třídu stejně získám ?
private $data=array();
Áno, bude to uložené tiež v $this->data. Ten riadok hovorí o tom, že sa má priradiť hodnota 'bar' do vlastnosti $this->foo. Keďže $this žiadnu takú vlastnosť nemá, použije sa špeciálna metóda __set, ktorá nastaví tú hodnotu do $this->data['foo'];
Keďže je tam private, tak sa práve k $data mimo triedu nedostaneš. Dostaneš sa len nepriamo cez ten getter a setter k hodnotám, ktoré sú tam uložené. (Keby si sa vedel zvonku dostať k $data, tak by si vedel napr. povedať, koľko prvkov $data obsahuje - a to v tomto prípade nevieš.)
Díky moc za objasnění, pokud jsem to dobře pochopil, tak když dám
a odstraním setter a getter, proměnná $data bude prázdná a místo toho se vytvoří tři další proměnné. Ano ?
Jde videt ze jsi zkopiroval kod ktery ani nevis co dela, protoze hned v obou metodach ktere tam mas, je to spravne. Kdyz uz nejakej kod kopirujes, alespon se na nej podivej a zkus pochopit co dela.