OOP v PHP: Základy OOP
Termín OOP znamená objektově orientované programování (dále už jen OOP), což je způsob programování, kdy chápeme procesy jako entity. Tedy zkráceně řečeno, nepotřebujeme vědět, jak daný program funguje, ale musíme vědět, jak tento program používat.
Na rozdíl od procedurálního programování, v OOP jsou data a funkce navzájem svázány do struktury, nazývané objekt. Třída je šablonou objektu, volání třídy se pak označuje jako instance. Pojmy instance a objekt jsou v podstatě synonyma. Často však mluvíme o konkrétním objektu jako o instanci, termín objekt se používá, pokud mluvíme o objektech obecně. S oblibou pak rozdíl mezi objektem a třídou vysvětluji tak, že objekt je vyjádřením třídy v reálném světě (i když to může být trochu zavádějící).
Jak napsat svoji první třídu? Definice třídy se skládá z klíčového slova class následovaného názvem třídy a párem složených závorek. Název třídy může být cokoli s výjimkou vyhrazených slov.
Je asi vhodné zmínit se hned na začátku o konvencích v pojmenování tříd. Pojmenování tříd se řídí takzvanou velbloudí notací (camel caps) – každé slovo v názvu třídy začíná velkým písmenem, ostatní jsou malá. Podívejme se, jak může vypadat naše první třída:
<?php class Trida{} ?>
Třídu vždy ukládejte do samostatného souboru. Není to přímo podmínkou (jako třeba v Javě), ale má to své výhody, jak poznáte v budoucnosti. Soubor pak pojmenujte stejně jako třídu, v našem případě Trida.php
.
Definici třídy tvoří atributy a metody. Atributy prozatím chápejme jako klasické proměnné a metody jako funkce.
Některé metody třídy mají zvláštní pojmenování a mají jen určitý význam. Takové metody začínají předponou __
(dvě podtržítka). Nejpoužívanější takovou metodou je konstruktor. Konstruktor je metoda, která se vykoná při vytváření každé instance třídy (každém volání třídy). Konstruktor provádí operace prvotního nastavení třídy. Podívejte se na následující příklad:
<?php class Trida{ private $vek; public function __construct($vek){ $this->vek = $vek; } public function kolikJeVamRoku(){ return $this->vek; } } $volani_tridy = new Trida(20); echo $volani_tridy->kolikJeVamRoku(); ?>
Zápis private $vek označuje definici atributu $vek
. Klíčové slovo private označuje viditelnost (viditelnost je vysvětlena jinde – prozatím stačí vědět, že jsme definovali atribut třídy). Dále public function __construct()
znamená volání konstruktoru třídy Trida. Tato metoda způsobí, že atributu $vek
je přiřazena hodnota $vek. Metoda public function KolikJeVamRoku()
vrací hodnotu atributu $vek
.
Pojmenování metod a atributů se opět řídí velbloudí notací, ovšem s tím rozdílem, že první písmeno je mále. Zápis $this->atribut
v lidské řeči znamená „odkazuji na atribut $atribut ze současné třídy“. Zapamatujte si, že $this
je pseudoproměnná, která se odkazuje na aktuální instanci, tedy na instanci, ve které se nachází! Pokud byste takto atribut volali mimo třídu, program by skončil fatální chybou.
Možná vás zaujalo klíčové slovo new
. Co to znamená? Právě takto se vytváří nová instance třídy. Zápis $volani_tridy = new Trida(20);
tedy znamená „vytvoř novou instanci třídy Trida
a rovnou předej hodnotu 20 konstruktoru“. Konstruktor, stejně jako ostatní metody, může používat i nepovinné parametry:
<?php class Trida{ private $vek; public function __construct($vek = 20){ $this->vek = $vek; } public function kolikJeVamRoku(){ return $this->vek; } } $volani_tridy = new Trida(); echo $volani_tridy->kolikJeVamRoku(); ?>
Pozn. red.: Zdůrazňujeme, že tento text se týká PHP 5.
Mohlo by vás také zajímat
-
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024 -
Windows App: Pracujte odkudkoliv, kdykoliv
3. listopadu 2024 -
Jak zabezpečit váš chytrý telefon před kybernetickými hrozbami
30. listopadu 2023 -
Od iPhonu po Android: Ultra HDR přináší nový standard fotografií
1. listopadu 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024
maathy
Úno 23, 2011 v 22:03Je to peknej clanek, chtel bych si ho vytisknout, akorat tu chyby verze pro tisk…. Skoda…. Nebo se to snad nejak dá?….
mstr
Úno 24, 2011 v 22:24Výborné! Asi jsem neviděl tak srozumitelný výklad základů OOP. Na malém prostoru je vysvětlena filosofie OOP i s příklady.
Jan Valenta
Lis 17, 2011 v 13:16Nemohl jsem to jinde pochopit a zde je to krásně vysvětlené. Děkuji za tento článek.
Anonym
Čvn 20, 2013 v 11:31Je to špicovní! Diky moc!
Pixworx
Říj 23, 2013 v 15:18Super tiež som to pochopil až z tohoto článku. Ďakujem.
MiJa
Bře 11, 2014 v 17:49Proc?! Proc je OOP lepsi? Nechapu…
Vzdyt ten posledni priklad se da mnohem jednoduseji napsat bez OOP:
function kolikJeVamRoku(){
return 20;
}
echo kolikJeVamRoku();
a ten prvni:
function kolikJeVamRoku($vek){
return $vek;
}
echo kolikJeVamRoku($vek);
Na co je OOP vlastne dobry?!
Michal
Srp 21, 2015 v 9:06OOP je vhodné používat pro složitější programy. Tyto příklady jsou jednoduché skripty, které slouží pouze pro vysvětlení základů OOP PHP. Těžko Vám bude někdo vysvětlovat základy na rozsáhlém programu, kde by jste se už ze začátku ztratila. Článek je perfektní! :) Díky
tomas262
Čvc 9, 2014 v 12:33MiJa: no když chceš třeba použít PHP framework, měl bys chápat, jak funguje OOP … proč použít framework? to je zase na jinou diskusi
Roman
Říj 3, 2014 v 14:16MiJa > v clanku je hodne jednoduchy priklad, aby si pochopil ako sa objekty pisu. V com je OOP lepsie pochopis pri zlozitejsich ukonoch.