PHP OOP: Základy objektového programování – metody [3]
Aby seriál o objektově orientovaném programování v PHP dával nějaký smysl, tak je třeba logicky tento díl věnovat metodám a vysvětlení pseudo proměnné $this se šipkou...
PHP OOP - co je to metoda?
Metoda (function) představuje v objektově orientovaném programování funkce daného objektu a určuje jeho chování. Prakticky se k metodám přístupuje přes danou třídu a ve formátu $objekt->metoda($parametry)
.
PHP OOP - co je to $this?
V objektově orientovaném programování v PHP je $this referencí k volanému (aktuálnímu) objektu, jedná se o tzv. pseudo proměnnou. Proměnná $this je dostupná když je metoda volána mezi objektovým kontextem.
PHP OOP - jak vytvořit metodu?
Příklad na třídě Zelenina
Uvedeme si opět rychlý příklad na okurce (objekt třídy Zelenina), který řekne více = vytvoříme metodu cenaOkurky, která vypočítá cenu prostým znásobením hmotnosti cenou.
class Zelenina //třída zelenina
{
public $hmotnost;
public $cena;
public function cenaOkurky()
{
$cena = $this->hmotnost * $this->cena;
echo $cena;
return $cena;
}
}
Pro výpočet je tedy třeba vytvořit nový objekt $okurka třídy Zelenina a nastavit mu atributy $hmotnost a $cena.
$okurka = new Zelenina();
$okurka->hmotnost = 500;
$okurka->cena = 0.02;
$okurka->cenaOkurky();
Když toto všechno uložíme, tak PHP skript vrátí, že cena okurky je 10 Kč.
PS: V klasickém procedurálním programování byste patrně vytvořili funkci function cenaOkurky($hmotnost,$cena) a dosadili přes proměnné hodnoty = vidíte ten rozdíl?
Příklad na třídě Letadla
Ve druhém příkladu si vytvoříme ve třídě Letadla jednoduchou metodu dobaLetu() pro výpočet doby letu na danou vzdálenost.
class Letadla //třída Letadla
{
public $oznaceni;
public $rychlost;
public $vzdalenost;
public function dobaLetu()
{
$doba = $this->vzdalenost / $this->rychlost;
echo 'Stroj ' . $this->oznaceni . ' ulétne ' . $this->vzdalenost . ' km za ' . $doba . ' hodin.';
return $doba;
}
}
Pro získání doby letu stačí novému objektu $stihacka třídy Letadla nastavit atributy = $oznaceni, $rychlost a $vzdalenost.
$stihacka = new Letadla();
$stihacka->oznaceni = 'F-16';
$stihacka->rychlost = 2124;
$stihacka->vzdalenost = 40003;
$stihacka->dobaLetu();
Výstupem z tohoto PHP skriptu bude:
"Stroj F-16 ulétne 40003 km za 18.833804143126 hodin"