Portál AbcLinuxu, 12. května 2025 05:59
header('Content-Type: text/html; charset=utf-8'); class Data { protected $data = array(); public function __construct(){} public function __set($key, $value){ $this->data[$key] = $value; } public function __get($key){ return $this->data[$key]; } } class Barva extends Data{ public function __construct($barva){ #Tady se snažím uložit údaj do pole "data" v třídě "Data". $this->data->barva = $barva; } } class Velikost extends Data{ public function __construct($velikost){ #Tady se snažím uložit údaj do pole "data" v třídě "Data". $this->data->velikost = $velikost; } } class Vypis extends Data{ public function __construct(){} public function __toString(){ #Tady se snažím načíst a zobrazit dva údaje z pole "data" v třídě "Data". echo $this->data->barva; echo $this->data->velikost; } } new Barva('ČERVENÁ'); new Velikost('XXXL'); new Vypis();
new Vypis();
vytvoří nový objekt v paměti, takže nemá v proměnné data
vůbec nic. Stejně tak ostatní třídy, nemůžeš nastavovat proměnnou třídě, ale již vytvořenému objektu.
Zkus si možná spíš napsat třídu, která bude mít vlastnosti barva a velikost a v ní nějakou metodu pro výpis. Pak bych teprve šel dědit.
Navíc zápis new Barva('ČERVENÁ');
nemá moc smysl, měl bys to ukládat do nějaké proměnné. Takhle se akorát zavolá __construct() a pak přijde na řadu Garbage Collector a proběhne metoda __destruct(), pokud tam nějaká je.
<?php header('Content-Type: text/html; charset=utf-8'); $tricko = new stdClass(); $tricko->barva = 'ČERVENÁ'; $tricko->velikost = 'XXXL'; echo "Tričko barva $tricko->barva, velikost $tricko->velikost";
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.