NULL je speciální hodnota, která vyjadřuje „prázdnou“ hodnotu. Pokud máme v proměnné uloženou hodnotu NULL, znamená to, že v proměnné nic není. Takhle to zní dost divně :-) Lidsky můžete říct, že pokud je v proměnné třeba "", tak tam není nic, ale opak je pravdou. Z programátorského hlediska vidíme, že "" uloženo v proměnné je prázdný řetězec. Je třeba si uvědomit, že NULL nemůžeme zaměňovat například s hodnotou 0 (nula), "" (prázdný řetězec) nebo s [] (prázdné pole). Hodnota NULL je totiž zvláštní v tom, že není žádného datového typu (na rozdíl od hodnot 0, "", []).
NULL zpravidla zapisujeme tak, že jsou buďto všechna písmena velká (NULL), nebo všechna malá (null). Je jedno, který způsob budeme v projektu používat, ale měli bychom si vybrat jen jeden. Je to opět spíše z důvodu konzistence.
Důvodů, proč bychom měli NULL používat, je hned několik. Můžeme třeba potřebovat inicializovat proměnnou, ale ještě nevíme, co do ní uložíme za hodnotu. Tu totiž můžeme ukládat až později.
<?php
// Příklad 1
$zaznamId = null;
$akce = "přidání";
if ($akce == "editace") {
$zaznamId = 3;
}
function pridejNeboUpravZaznam(string $akce, ?int $zaznamId) {
// kód pro přidání a editaci, budou využity podmínky
}
// například máme funkci, která umí přidat nebo upravi záznam (návratovou hodnotou se teď zabývaat nebudeme)
// při přidávání záznam neexistuje, tudíž neexistuje id (NULL)
// pro editaci je id záznamu třeba a již exisuje (3) (v praxi bychom si ho vytáhli z databáze)
?>
Pokud potřebujeme zjistit, zda hodnota je nebo není NULL, můžeme vyzkoušet jeden z následujících způsobů:
<?php
$promenna = null;
if (isset($promenna)) {
// isset se ptá, jestli je proměnná nastavena
// pokud je proměnná null, vyhodnotí se jako false a do bloku if se kód nedostane
}
if ($promenna === null) {
// přímo se ptáme, jestli je hodnota null
// hodnota je null, vyhodnotí se jako true a vykonává kód v tomto bloku
// opakem by bylo: $promenna != null
}
if (!$promenna) {
// vykřičník před proměnnou neguje
// v podstatě se ptáme "pokud NENÍ proměnná", nebo "pokud v proměnné nic není"
// vyhodnotí se jako true, vykonává se kód v tomto bloku
}
?>
Další využití NULL je ve funkcích. Už jsme si ukazovali, že do funkce nám mohou vstupovat nějaké argumenty, a že je dobré označit, jakého mají být datového typu. Stejným způsobem ošetřujeme i návratové hodnoty funkcí.
Protože ale funkce voláme v různých částech programu s různými hodnotami, které nemusíme mít zcela pod kontrolou, je dobré jak vstupní argumenty funkce, tak výstup funkce, ošetřit, aby nám program nevyhazoval chyby a plynule pokračoval.
K takovému ošetření potřebujeme před datové typy ve funkci jen připsat otazník a poté v těle funkce ověřit kód podmínkou.
<?php
function nejakaMojeFunkce(int $cislo): int {
// neco udělej a pak něco vrať
return $cislo;
}
nejakaMojeFunkce(3); // vrátí 3
nejakaMojeFunkce(); // program skončí chybou
function jinaMojeFunkce(?int $cislo): ?int {
if ($cislo) {
return $cislo;
} else {
return null; // program k dalšímu pokračování číslo nepotřebuje
}
}
jinaMojeFunkce(3); // vrátí 3
jinaMojeFunkce(); // nevrátí nic a program pokračuje dál
function jesteJinaFunkce(?int $cislo): int
{
if ($cislo) {
return $cislo;
} else {
return 4; // program k dalšímu pokračování nutně potřebuje číslo, dáme mu tedy nějakou výchozí hodnotu
}
}
jesteJinaFunkce(3); // vrátí 3
jesteJinaFunkce(); // vrátí 4
?>
Konstanty fungují velmi podobně jako proměnné s tím rozdílem, že není možné měnit jejich hodnotu.
Konstanty definujeme pomocí klíčového slova const. Je zvyk pojmenovávat konstanty velkými písmeny, pokud je název víceslovný, tak se slova oddělí podtržítkem.
<?php
const MIN_VALUE = 10;
const NAZEV_WEBU = 'Můj blog';