Lekce 2 - První objektová aplikace v PHP
Minulá lekce, Úvod do objektově orientovaného programování v PHP, nás uvedla do objektově orientovaného programování.
V dnešním tutoriálu se budeme věnovat tomu jak OOP funguje a vytvoříme si svou první objektovou aplikaci v PHP.
Jak OOP funguje
Snažíme se nasimulovat realitu tak, jak ji jsme zvyklí vnímat. Můžeme tedy říci, že se odpoutáváme od toho, jak program vidí počítač (stroj) a píšeme program spíše z pohledu programátora (člověka). Jako jsme tehdy nahradili assembler lidsky čitelnými matematickými zápisy, nyní jdeme ještě dál a nahradíme i ty. Jde tedy o určitou úroveň abstrakce nad programem. To má značné výhody už jen v tom, že je to pro nás přirozenější a přehlednější.
Základní jednotkou je objekt, který odpovídá nějakému objektu z reálného světa (např. objekt člověk nebo databáze).

Objekt má své atributy a metody.
Atributy
Atributy objektu jsou vlastnosti neboli data, která uchovává (např. u člověka jméno a věk, u databáze heslo). Jedná se o prosté proměnné, se kterými jsme již stokrát pracovali. Někdy o nich hovoříme jako o vnitřním stavu objektu.
Metody
Metody jsou schopnostmi, které umí objekt vykonávat. U
člověka by to mohly být metody: jdiDoPrace()
,
pozdrav()
nebo mrkni()
. U databáze
pridejZaznam()
nebo vyhledej()
). Metody mohou mít
parametry a mohou také vracet nějakou hodnotu. Od funkcí se liší tím, že
metoda patří objektu, zatímco funkce nepatří nikam (to je také problém
neobjektového kódu).

V této lekci si vysvětlíme jen úplné základy, tedy jak objekty vytvářet. Dalším tématům OOP budou věnovány další lekce, aby toho nebylo najednou moc 🙂
Třída
S pojmem třída jsme se již také setkali, chápali jsme ji jako soubor příkazů. Třída však umožňuje mnohem více. Třída je vzor, podle kterého se objekty vytváří. Definuje jejich vlastnosti a schopnosti.
Objekt, který se vytvoří podle třídy, se nazývá
instance. Instance mají stejné rozhraní
jako třída, podle které se vytváří, ale navzájem se liší svými daty
(atributy). Mějme například třídu Clovek
a od ní si vytvořme
instance $karel
a $josef
. Obě instance mají jistě
ty samé metody a atributy, jako třída (např. $jmeno
a
$vek
) a metody (jdiDoPrace()
a
pozdrav()
). Ale hodnoty v nich se liší (první instance má v
atributu $jmeno
hodnotu Karel
a v atributu
$vek
hodnotu 22
, druhá Josef
a
45
).
Komunikace mezi objekty probíhá pomocí předávání zpráv, díky čemuž
je syntaxe přehledná. Zpráva obvykle vypadá takto:
$příjemce->jménoMetody($parametry);
. Např.
$karel->pozdrav($sousedka);
by mohl způsobit, že instance
$karel
pozdraví instanci $sousedka
.
První objektová aplikace
Již víme, že objekty mají atributy a metody. Také víme, že k vytvoření objektu vytvoříme nejprve třídu. Ta je vzorem, podle kterého následně tvoříme její instance.
Na začátku kurzu se základními strukturami jazyka PHP jsme si vytvořili aplikaci Hello world. Udělejme si nyní podobnou aplikaci jako úvod do objektově orientovaného programování. Naprogramujme si aplikaci Hello object world!
Vytvoření třídy
Založme si novou PHP aplikaci tak, jak jsme to dělali doposud.
Definujme si třídu Clovek
, která nám umožní vytvářet
instance lidí. Třídy píšeme do samostatných souborů a tyto soubory
pojmenováváme stejně, jako se jmenuje třída. K pojmenovávání tříd
používáme notaci PascalCase
, kdy třída začíná na velké
písmeno a pokud má více slov, píšeme je dohromady a každé nové slovo
opět s velkým písmenem. Třídy je dobré mít v nějaké složce, vytvořme
si tedy složku tridy/
a v ní soubor Clovek.php
.
Obsah souboru Clovek.php
bude následující:
<?php class Clovek { }
Třídu jsme definovali klíčovým slovem class
a vytvořili
jí blok ze složených závorek, kam budeme psát její prvky. Všimněte si,
že jsme PHP direktivu na začátku souboru pouze otevřeli, ale již
neuzavřeli. Je to doporučená praktika, protože v souboru nebude žádné
HTML a proto by se mělo PHP otevřít hned na začátku a pokud ho neuzavřeme,
platí až na konec souboru.
Metody
Nyní si do třídy Clovek
přidáme metodu
pozdrav()
, bude veřejně viditelná a nebude mít žádnou
návratovou hodnotu ani atributy.
Deklarace metody v PHP je tedy následující:
[modifikátorPřístupu] function [názevMetody]([parametry])[: návratový_typ]
Před metodou bude tzv. modifikátor přístupu, v našem případě
public
(veřejná). Dále bude následovat klíčové slovo
function
a samotný název metody. Metody píšeme stejně jako
proměnné velbloudí notací s malým počátečním písmenem. Závorka s
parametry je povinná, my ji necháme prázdnou, protože metoda žádné
parametry mít nebude. Naše metoda nebude vracet žádnou hodnotu, toho
docílíme klíčovým slovem void
za dvojtečkou. Do těla metody
zapíšeme kód pro výpis:
<?php class Clovek { public function pozdrav() : void { echo('Hello object world!'); } }
Vraťme se do složky s projektem a vytvořme soubor index.php
.
Soubor s třídou musíme načíst pomocí funkce require()
, jen
tak budeme schopni vytvořit její instanci. Abychom se vyvarovali problémům,
použijeme funkci require_once()
, která třídu načte jen v
případě, že načtená ještě není. Následně vytvoříme instanci třídy
Clovek
a přikážeme ji, aby nás pozdravila:
<?php require_once('tridy/Clovek.php'); $karel = new Clovek(); $karel->pozdrav();
<?php class Clovek { public function pozdrav() : void { echo('Hello object world!'); } }
Instance ukládáme jednoduše do proměnných. Proměnná by se samozřejmě
měla jmenovat podle toho, co v ní je. Instanci vytvoříme pomocí
klíčového slova new
, za kterým následuje název třídy a
poté závorky. Závorky nejsou povinné, ale je lepší je tam psát. Na
instanci nyní můžeme volat metody, které jsou ve třídě definovány.
Metody voláme pomocí operátoru šipky a jedná se v podstatě o vylepšené
volání funkcí, jako jsme to dělali dříve.
Výstup aplikace nyní bude:
Máme tedy svou první objektovou aplikaci!
Naše aplikace nyní pracuje s objektem a i když bychom ji zatím mohli
nahradit pouhým zavoláním echo('Ahoj')
, v budoucnu se nám
objekty velmi vyplatí. Až bude kódu více, bude stále přehledný.
V příští lekci, Atributy a magické metody v PHP, se zaměříme na atributy objektů a tzv. magické metody.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 1384x (3.87 kB)
Aplikace je včetně zdrojových kódů v jazyce PHP