NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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).

Objekty v objektově orientovaném programování - Objektově orientované programování (OOP) v PHP

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).

Objekty v objektově orientovaném programování - Objektově orientované programování (OOP) v PHP

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:

Tvoje stránka
localhost

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

 

Předchozí článek
Úvod do objektově orientovaného programování v PHP
Všechny články v sekci
Objektově orientované programování (OOP) v PHP
Přeskočit článek
(nedoporučujeme)
Atributy a magické metody v PHP
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
300 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity