Jazyk PHP - pokračování
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
programu
Sada magických metod __
Sada magických metod _ get
ge , __set, __
, __set, _ isset
isse ,
,
__
_ unset
unse jsou v takovém případě zavolány a mohou
jsou v takovém případě zavolány a mohou
situaci vyřešit.
situaci vyřešit
class GetSetClass {
// zde si budeme udrzovat vlastnosti tridy
private $hodnoty = array();
// tato vlastnost je definovana a pro pristup
// k ni nebude volana zadna magicka funkce
public $jmeno = "GestSetTrida";
// tato funkce bude zavolana v okamziku, kdy se pokusime
// nastavit vlastnost, ktera neni dostupna (neexistuje)
public function __set($klic, $hodnota) {
// zapiseme klic=>hodnota do pole $values
$this->hodnoty[$klic] = $hodnota;
}
// tato funkce bude zavolana v okamziku, kdy se pokusime
// precist vlastnost, ktera neni dostupna (neexistuje)
public function __get($klic) {
// pokud klic zname, vratime hodnotu
if (array_key_exists($klic,$this->hodnoty)) {
return $this->hodnoty[$klic];
}
else {
// jinak vyvolame lehkou chybu
trigger_error("Pokus o přečtení nedefinované vlastnosti
$klic",
E_USER_NOTICE);
return null;
}
}
// dotaz na existenci vlastnosti
public function __isset($klic) {
return isset($this->hodnoty[$klic]);
}
//zruseni vlastnosti
public function __unset($klic) {
unset($this->hodnoty[$klic]);
}
}
// otestovani funkcnosti
// fragment kodu
$gsc = new GetSetClass();
$gsc = new GetSetClass()
$gsc->adresa = "Karlovo nam.";
// pouzije se magicka metoda
$gsc->prijmeni = "Klima";
// pouzije se magicka metoda
$gsc->jmeno = "Martin";
// jmeno je klasicky dostupna vlastnost, bude primo
nastavena
// zkusime se zeptat na nejakou vlastnost
echo ($gsc->adresa); // tato byla drive dynamicky nastavena, hodnota je Karlovo
nam.// zkusime se zeptat na neco, co jeste nastaveno nebylo
echo ($gsc->PSC); // vyvola nami definovanou chybu.
Autoload
Autoloa
Jestliže nebude nalezena definice dané třídy, bude
Jestliže nebude nalezena definice dané třídy, bude