Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

18. diel - Dátové typy v PHP

Vitajte u lekcie o dátových typoch v PHP. Dnes si zhrnieme dátové typy v PHP, ukážeme si, ako s nimi pracovať a v čom je to tak trochu iné od ostatných jazykov.

Dynamické typovanie

Prakticky alfa omega typov PHP. PHP totiž pre deklaráciu premenných nevyžaduje definíciu dátového typu, ale rozozná dátový typ z kontextu, v akom sme premennú použili. Teda ak do premennej vložíme string, PHP bude túto premennú považovať za premennú s dátovým typom string.

Z kontextu sa dátový typ rozpozná tiež pri operáciách, príkladom môže byť násobenie. Ak násobíme dve čísla, kedy jedno z nich je definované ako dátový typ float, potom oba operandy sú brané ako float a výsledok bude v typu float.

Pre začiatok teda vieme, že PHP definuje dátový typ podľa kontextu a my ako užívatelia nemusíme žiadny dátový typ presne definovať. Poďme si jednotlivé dátové typy viac priblížiť.

Dátové typy

Než budeme pokračovať, musíme si tiež ukázať, aké všetky dátové typy sú v PHP používané:

  • string
  • integer
  • float
  • Boolean
  • array
  • object
  • null

Nižšie si ich všetky lepšie vysvetlíme.

String

String, alebo po slovensky textový reťazec, je dátový typ pre text. Definovať ho môžeme vložením textu do apostrofov ' alebo úvodzoviek ". V prípade potreby môžeme text rozdeliť do viacerých riadkov:

$string1 = "Já jsem string";
$string2 = 'Já jsem
taky string';

Pre rôzne úpravy textu slúžia v PHP tzv. Reťazové funkcie, ktorých je naozaj veľa. Ich použitie a vysvetlenie môžeme nájsť v našom kurze o PHP funkciách.

Integer

Ďalšia dátový typ je integer, tiež nazývaný skrátene int a je to celočíselný formát. To znamená, že v ňom môžeme zapísať iba celé čísla bez desatinnej čiarky (v programovacích jazykoch sa používa bodka). Akákoľvek deklarácie premenné s číslom bez desatinnej čiarky je teda automaticky považovaná za int.

Pokiaľ ale vykonáme s takou premennou operáciu, ktorej výsledok je desatinné číslo, výsledok sa vypíše ako float. Rovnako tak, ak vykonáme operáciu, keď druhý operand bude v typu float, PHP nám vždy vráti float.

$var1 = 5   // proměnná je int
$var2 = 2   // proměnná je také int
$var3 = 5.0 // proměnná je typu float
$var1/$var2 // int/int - výsledek se nám vrátí jako datový typ float
$var1/$var3 // int/float - výsledek se nám také vrátí jako float, i když je výsledek celočíselná hodnota

Float

Teraz už ale k tomu stále spomínanému dátovému typu float. Je to typ údajov pre reálne čísla s plávajúcou desatinou čiarkou, podľa toho sa vlastne tiež volá.

V PHP desatinnú čiarku zapisujeme ako bodku, ako sme už spomenuli na začiatku lekcie:

$float = 1.23;

Ako už bolo vysvetlené vyššie, akákoľvek operácia s float nám vráti výsledok ako float.

Boolean

Boolean je od predchádzajúcich dátových typov odlišný. Je to tzv. Logická hodnota. Rozlišuje teda iba medzi hodnotami true (pravda) a false (nepravda). Ich písanie je tzv. Case-insensitive. To znamená, že ich môžeme napísať s akokoľvek veľkými či malými písmenami:

$var1 = tRue;  // reprezentuje hodnotu true
$var2 = fALSe; // reprezentuje hodnotu false

Najčastejšie sa boolean využíva v podmienkach (if). Ak chceme porovnať logickú hodnotu a chceme zaručiť pravdivosť dátového typu, musíme miesto dvojitého rovná sa == použiť trojité rovná sa ===. Takéto porovnania okrem ich hodnoty porovná aj ich dátové typy. PHP totiž ako logické hodnoty považuje tiež 1 a 0. Takéto porovnanie by teda vyzeralo nejako takto:

if (1 == true){}  // vyhodnoceno jako TRUE
if (1 === true){} // vyhodnoceno jako FALSE

Array

Dostávame sa k zložitejším dátovým typom. Prvým z nich je array čiže pole. Pole definujeme hranatými zátvorkami [] alebo pomocou funkcie array() s hodnotami, poprípade s ich indexy alebo kľúčmi.

Jednoduchý príklad pole môže vyzerať nejako takto:

$jmena = ["Karel", "Tomáš", "Lukáš"];

Vytvorili sme pole s menami troch kamarátov.

Pole je v PHP usporiadaná mapa kľúčov a ich hodnôt. Na rozdiel od iných jazykov, kde je pole iba súhrn hodnôt očíslovaných od 0 po konečne veľa, v PHP pracujú poľa trochu inak. Pre nás je dôležité to, že položky polia môžu mať rôzne dátové typy, nemusíme definovať dĺžku poľa a že nemusíme používať iba indexy pre prístup k jednotlivým položkám. Ako položky poľa môžu byť rôzne dátové typy, ako príklad môžeme použiť pole, do ktorého by sme ukladali vek a meno človeka.

Pokiaľ nešpecifikuje inak, pole v PHP sa vytvorí ako číslované pole s prvou položkou očíslovanú nulou. K druhej položke v poli (meno Tomáš) by sme pristupovali nasledovne:

$jmeno = $jmena[1];

Pre prístup k položkám ale nemusíme vždy používať indexy. Kľúče si môžeme definovať podľa seba a to buď ako int alebo ako string. Deklarácia nášho poľa teda môže vyzerať aj takto:

$pole = [
       "první hodnota pole bez definovaného klíče",
       "jméno" => "druhá hodnota pole s klíčem jméno",
       5 => 34
    ];

Takto deklarovanej pole by pri výpise vyzeralo nasledovne:

array (size=3)
  0 => string 'první hodnota pole' (length=19)
  'jméno' => string 'druhá hodnota pole s indexem jméno' (length=36)
  5 => int 34

Tomuto hovoríme asociatívne polia a to z dôvodu, že asociuje jednotlivé položky ku kľúčom.

Object

Ako ďalší dátový typ v PHP je tzv object alebo po slovensky objekt. Objekt je inštancia triedy. Môže mať funkcie, ktorým sa hovorí metódy a premenné ktorým sa hovorí vlastnosti. Jeho definícia a prístup k jeho vlastnostiam vyzerá takhle:

$bmw = new Auto("BMW řada 8");
$bmw->nazev;

To je všetko čo o objektoch potrebujete v túto chvíľu vedieť. Objektovo orientovanému programovania sa do hĺbky venujú ďalšej lekcie.

Null

Null je špeciálny dátový typ, ktorý môže mať len hodnotu null. Premenná typu null je premenná bez priradené hodnoty. To znamená, že ak napríklad deklarujeme premennú, ale nepriradíte ju hodnotu, nastaví sa automaticky hodnota null.

Pretypovanie

Keď už je premenná deklarovaná s určitým typom údajov, môžeme ju stále pretypovať na iný typ údajov. Slúži nám k tomu prefixy v znení dátových typov:

  • (Int), (integer) - Int
  • (Bool), (boolean) - Boolean
  • (Float), (double), (real) - Float
  • (String) - String
  • (Array) - Pole
  • (Object) - Objekt
  • (Unset) - Null

Prefixy sa použijú týmto spôsobom:

$int = 10;
$string = (string) $int; // proměnná $string bude obsahovat text "10"

Pre ďalšie pretypovania medzi rôznymi dátovými typmi platia rôzne pravidlá. Tá sa dajú opäť prehľadnejšie dohľadať v PHP dokumentáciu a sú príliš obsiahlo tému pre túto lekciu.

Sčítanie a pridávanie

V PHP sa môžeme stretnúť, ako s klasickým matematickým sčítaním, tak s tzv. Pridávaním. To znamená, že napríklad spojíme dva stringy. Pre sčítanie sa používa operátor plus + a pridávanie znak bodky ..

Ak použijeme sčítanie, obaja operandmi sa vyhodnotí ako čísla a pokúsi sa sčítať. Ak by sme sumarizáciu string a číslo, prebehne sčítanie na základe hodnoty daného stringu, pre podrobné vysvetlenie týchto zložitejších podmienok nám pomôže PHP dokumentácie.

Ak pridávame, teda používame bodku, prevedú sa čísla na string a "pridajú" sa ku stringu. Ukážeme si nejaké príklady sčítanie a pridávanie:

$a = 5 + "5 kluků"  // 10
$b = 5 + 6.5        // 11.5
$c = "Ahoj"."světe" // "Ahojsvěte"
$d = "Ahoj".5       // "Ahoj5"

Statické typovanie

Čo to? Statické typovanie? Vyššie v článku bolo síce spomenuté, že PHP typu dátové typy dynamicky. Niekedy sa nám však môžu hodiť vlastnosti statického typovanie od verzie PHP 7. Preto pri definovaní vlastností objektu môžeme pridať dátový typ, ktorý táto vlastnosť bude mať. To sa nám môže hodiť, ak vieme, že $object->produkty má byť pole s produktmi, a alebo že $object->cena má byť vždy cena, takže chceme použiť dátový typ float.

V praxi by to vyzeralo nejako takto:

class Produkt {
  public int $id;
  public float $cena;
  public array $parametry;
  public boolean $vProdeji;
}

Každý dátový typ sme definovali a ak budeme niekde v projekte získavať dáta od užívateľov, zaistíme si tým čiastočne aj to, že nám nepristane dáta iného dátového typu, aj keď toto by sme mali ošetrovať aj inde.

Od PHP 8.0 bude možné definovať aj viac dátových typov. To sa nám môže hodiť napríklad pri návratové hodnoty, tá by mohla byť buď true alebo chybová hláška. V takom prípade budeme môcť písať nasledujúce:

class Produkt {
  public boolean|string $message;
}

V budúcej lekcii, Najčastejšie chyby PHP nováčikov - Vieš pomenovať premenné? , si ukážeme najčastejšie chyby začiatočníkov v PHP ohľadom pomenovanie premenných.


 

Predchádzajúci článok
Tvorba knižníc v PHP
Všetky články v sekcii
Základné konštrukcie jazyka PHP
Preskočiť článok
(neodporúčame)
Najčastejšie chyby PHP nováčikov - Vieš pomenovať premenné?
Článok pre vás napísal kukivac
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje back-end developmentu webových aplikací.
Aktivity