PHP OOP: Základy objektového programování - třídy [1]
Základní myšlenkou objektově orientovaného programování (OOP) je pohled na program jako na systém objektů = tzn. podobně jako vnímáme náš svět. V tomto článku se podíváme na definici a vytvoření třídy, atributů třídy, autoloader tříd a tři typy viditelnosti.
Hlavní tří body OOP jsou:
- zapouzdření
- dědičnost
- polymorfismus
PHP OOP - co je to třída?
Třída (class) je v objektově orientovaném programování základním kamenem aplikace - seskupuje objekty se stejnými vlastnostmi. Třída neobsahuje konkrétní hodnoty - ty má až objekt. Jinak řečeno, jedná o šablonu/vzor objektu definující jaké vlastnosti a metody má každý z objektů této třídy. Objekt vzniklý dle třídy se nazývá instance. Atribut třídy je vlastnost, kterou mají všechny objekty dané třídy.
PHP OOP - jak vytvořit třídu?
Můžeme chtít vytvořit např. třídu Letadla, která bude mít veřejné (public) atributy třídy $oznaceni, $rychlost a $hmotnost - prakticky to znamená vytvoření souboru classes/Letadla.php s tímto obsahem:
class Letadla //třída letadla
{
public $oznaceni; //atribut třídy
public $rychlost; //atribut třídy
public $hmotnost; //atribut třídy
}
Třídu pak stačí pouze ručně includovat v daném PHP souboru.
PHP OOP - autoloader tříd
V budoucnu mohou naše aplikace obsahovat velké množství tříd a includování každé třídy zvlášť by bylo otravné, proto je vhodné použít v záhlaví tzv. autoloader tříd.
Funkce autoloader níže includuje automaticky všechny třídy v adresáři classes/*
function autoloader($class)
{
require("classes/$class.php");
}
spl_autoload_register("autoloader");
PHP OOP - co je viditelnost?
U atributů a metod se definuje ještě tzv. viditelnost (visibility), jsou tři typy:
- public - k metodám a atributům lze přistupovat ze všech tříd
- protected - k metodám a atributům může přistupovat jen daná třída a potomci
- private - k metodám a atributům může přistupovat jen daná třída
PHP OOP - co je konstruktor?
Konstruktor __construct() je tzv. magická metoda - začíná dvěma podtržítky. Ze všech magických metod je konstruktor asi nejvíce využívaný. Konstruktor se vždy sám spustí při vytvoření instance třídy a provádí provotní nastavení objektu.
public function __construct(string $name)
{
$this->name = $name;
}
Všechny magické metody jsou:
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __serialize(), __unserialize(), __toString(), __invoke(), __set_state(), __clone() a __debugInfo()