V predchádzajúcom článku ste sa mohli dozvedieť, čo je PHP a na čo sa používa. V tomto článku sa zameriame na to, ako rozbehať PHP a ako začať s vývojom. Na jednoduchých ukážkach znázorníme základné konštrukcie jazyka a tiež si povieme niečo o knižniciach a frameworkov tretích strán.

Prvé kroky

Predtým, ako začneme písať PHP scripty, musíme mať PHP nainštalované. Našťastie, PHP je dostupný pre každý bežne používaný operačný systém a webový server. Na OS Ubuntu si vieme PHP nainštalovať príkazom sudo apt install php. Pre overenie, či inštalácia prebehla úspešne, môžeme spustiť príkaz php -v, ktorý by mal mať podobný výstup:

PHP 8.1.8 (cli) (built: Jul 11 2022 08:29:57) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.8, Copyright (c) Zend Technologies
 with Zend OPcache v8.1.8, Copyright (c), by Zend Technologies

Lepším spôsobom, ako vyvíjať v jazyku PHP, je použitie docker kontajnerov. Týmto spôsobom budeme môcť pracovať na rôznych projektoch s rôznymi verziami PHP. Ukážkový projekt s použitím dockera nájdete napríklad tu

Základy jazyka PHP

Ak máme nainštalovaný PHP, môžeme začať programovať 🙂 Každý PHP script je “ohraničený” tagom:

<?php
// PHP kód
?>

Začneme klasickým príkladom “Hello world!”. Vytvoríme súbor “hello.php” s nasledujúcim obsahom:

<?php
echo 'Hello world!';
?>

Script spustíme jednoducho príkazom “php hello.php”. Výstup je nasledovný:

PHP Hello world

Ale aby sme neostali pri takom jednoduchom príklade, ukážeme si základné vlastnosti a konštrukcie jazyka PHP. Kľúčové slová v jazyku PHP nie sú “case sensitive”, ale pre prehľadnosť je dobré dodržať určité štandardy. Každý PHP framework môže mať iné štandardy, ako písať kód, ale základy majú rovnaké. 

Premenné v jazyku PHP sa začínajú znakom $, môžu obsahovať iba alfanumerické znaky a sú vytvorené v momente, keď sa im prvýkrát priradí hodnota. PHP má slabé dynamické typovanie, čo znamená, že typ premennej je automaticky priradený bez deklarácia. Vo verzii 7 však boli pridané deklarácie, a tým pádom máme možnosť určiť typ premennej. Rozlišujeme lokálny a globálny “scope” premenných:

  • Globálny scope: premenná je definovaná “všade”
  • Lokálny scope: premenná je definovaná iba v aktuálnom bloku (napr. telo funkcie)

Ak chceme použiť globálnu premennú v lokálnom scope, musíme to určiť pomocou kľúčového slova global na začiatku tela funkcie:

<?php
$a = 5;

function test($b, $c = 10) {
  global $a;
  static $d = 1;
  $result = $a + $b + $c + $d;
  $d++;
  return $result;
}

echo test(3);; // výstup 19
echo test(5, 5);; // výstup 17
?>

Niekedy ale nechceme, aby bola lokálna premenná vymazaná. Na tento účel môžeme použiť kľúčové slovo static pri deklarovaní premennej, ktorý zabezpečí, aby sme mohli pracovať s aktuálnou hodnotou danej premennej aj v nasledujúcich volaniach funkcie. V ukážke vyššie si môžete všimnúť, že v prvom volaní funkcie test je premenná $d inicializovaná s hodnotu 1, ale pri nasledujúcom volaní už má hodnotu 2.

Na predchádzajúcom príklade môžete taktiež vidieť, ako deklarovať a volať funkciu. Ako ste si mohli všimnúť, v prvom volaní funkcie sme použili iba jeden parameter a v druhom dva. V jazyku PHP je možné priradiť predvolenú hodnotu argumentom funkcie (v ukážke je k argumentu $c priradená predvolená hodnota 10, ktorá sa aplikuje v prípade, ak pri volaní funkcie nezadáme hodnotu daného argumentu). 

Základné PHP prvky

Ďalej si pozrieme ďalšie základné prvky jazyka PHP, ktoré sú nevyhnutné pre prácu s ním.

Dátové typy v jazyku PHP

Ako každý programovací jazyk, aj PHP má svoje vstavené dátové typy, ktoré sú nasledujúce:

  • string: reťazec znakov
  • int: celočíselná hodnota
  • float alebo double: reálne číslo jednoduchej a dvojnásobnej presnosti
  • bool: logický dátový typ (true/false)
  • array: pole
  • null: označuje prázdnu hodnotu – ak deklarujeme premennú bez počiatočnej hodnoty, automaticky bude mať hodnotu null

Operátory v jazyku PHP

Operátory v PHP sú zväčša rovnaké, ako pri iných programovacích jazykoch. Detailnejšie vysvetlenie k jednotlivým operátorom nájdete tu. V PHP máme nasledujúce operátory:

  • Aritmetické: +, -, *, /, % (modulus), ** (exponent)
  • Priraďovacie: =, +=, -=, *=, /=, %=
  • Porovnanie: ==, ===, !=, <>, !==, >, <, >=, <=, ⇔
  • Inkrementácia, dekrementácia: $x++, ++$x, $x– , –$x
  • Logické: &&, ||, !
  • Konkatenácia reťazcov: ., .=

Podmienky (if…else…, switch)

Ak chceme vykonať časť kódu na základe nejakej podmienky, môžeme použiť konštrukciu ifelse, ktorá má nasledujúcu syntax:

if (podmienka) {
  kód sa vykoná ak podmienka je vyhodnotená ako pravdivá (true)
} else {
  kód sa vykoná ak podmienka nie je pravdivá (false)

Pri priraďovaní hodnoty premennej na základe podmienky môžeme tiež použiť tzv. ternárny operátor (?:):

$x = podmienka ? hodnota pre pravdivú podmienku : hodnota pre nepravdivú podmienku

Ak chceme vykonať kód podľa toho, akú hodnotu má premenná, a tých možností je viac, je lepšie použiť konštrukciu switch, ktorá na základe hodnoty premennej vykoná požadovanú časť kódu:

switch (n) {
  case hodnota1:
    Kód sa vykoná ak n=hodnota1;
    break;
  case hodnota2:
    Kód sa vykoná ak n=hodnota2;
    break;
  case hodnota3:
    Kód sa vykoná ak n=hodnota3;
    break;
    ...
  default:
    Kód sa vykoná ak n má inú hodnotu ako všetky vyššie vymenované hodnoty;
}

Cykly v jazyku PHP

V PHP máme niekoľko typov cyklov, ktoré si aj ukážeme:

While

Vykonáva telo cyklu, kým je podmienka pravdivá:

while (podmienka) {
  kód ktorý sa má vykonať
} 

$i = 10;
while ($i > 0) {
 echo $i . PHP_EOL;
 $i--;
}

Do while

Vykoná telo cyklu raz, a potom ho ďalej ho vykonáva ďalej, kým podmienka je pravdivá:

do {
  kód ktorý sa má vykonať
} while (podmienka); 

$str = '';
do {
 $str .= 'a';
 echo $str . PHP_EOL;
} while ($str !== 'aaaa');

For cyklus

Telo cyklu sa vykoná určitý počet krát – musíme definovať premennú, ktorá sa bude inkrementovať, podmienku pre ukončenie cyklu a spôsob inkrementácie “počítadla”:

for (inicializácia počítadla; podmienka; inkrementácia počítadla) {
  kód ktorý sa má vykonať
} 

for ($i = 0; $i < 5; $i += 2) {
 echo $i . PHP_EOL;
}

Foreach cyklus

Vykonáva telo cyklu pre každú položku v poli. Existujú dva varianty foreach cyklu:

  • v prvom sa používa iba hodnota položky v poli
  • v druhom sa používa okrem hodnoty aj kľúč položky v poli
foreach ($pole as $hodnota) {
  kód ktorý sa má vykonať
} 

$array = [1 => 'one', 2 => 'two', 3 => 'three'];
foreach ($array as $val) {
 echo $val . PHP_EOL;
}
foreach ($pole as $kľúč => $hodnota) {
  kód ktorý sa má vykonať
} 

foreach ($array as $key => $val) {
 echo $key . ' => ' . $val . PHP_EOL;
}

Vo všetkých typoch cyklov môžeme použiť príkazy break a continue”:

  • break: použije sa, ak chceme prerušiť vykonávanie celého cyklu
  • continue: použije sa, ak chceme preskočiť vykonávanie aktuálnej iterácie cyklu

Okrem spomínaných základných funkcionalít/konštrukcií, ktoré každý programovací jazyk svojim spôsobom má, v jazyku PHP sú vstavané aj funkcionality naviac, ako napríklad:

  • Práca s databázami
  • Parsovanie a práca s XML
  • AJAX-ové volania

Knižnice PHP

Síce aj s jednoduchým PHP scriptom dokážeme urobiť v princípe všetko, našu prácu si vieme uľahčiť použitím knižníc, alebo softvérových rámcov. Tie nám poskytnú platformu, nad ktorou vieme vytvárať naše aplikácie, a ušetria nám kopec času, keďže majú v sebe implementované všetky bežne používané funkcionality.

Použitie frameworkov ma viacero výhod:

  • Urýchli vývoj
  • Zredukuje množstvo kódu, ktoré by sme museli napísať sami
  • Bežné funkcionality sú už implementované
  • Uľahčí dodržať dobré ‘coding practices’
  • Je bezpečný
  • Poskytuje jednoduchšiu údržbu kódu

Predtým, ako by sme mohli začať používať nejaký PHP framework, potrebujeme mať aspoň základné znalosti jazyka PHP. Taktiež je dobré vedieť aj objektovo orientovaný PHP, keďže väčšina frameworkov je napísaných práve v paradigme OOP.

Najpoužívanejšie PHP frameworky:

  • Laravel (webové aplikácie)
  • Zend Framework / Laminas Project
  • Symfony
  • Slim (micro framework pre webové aplikácie a API)

V ďalších článkoch zo série vám viac priblížime prácu s niektorými frameworkami.

Máš toto všetko v malíčku? Potom sa pridaj do nášho tímu!