Od verze 4.1.0 poskytuje PHP sadu předdefinovaných polí, obsahujících proměnné WWW serveru (pokud to jde), prostředí a uživatelského vstupu. Tato nová pole mají tu zvláštnost, že jsou automaticky globální – tedy např. automaticky dostupné v každém kontextu.
Z tohoto důvodu jsou často známa jako „autoglobální“ nebo „superglobální“.(v PHP neexistuje mechanismus pro uživatelskou definici superglobálních proměnných). Superglobální proměnné jsou vypsány níže.
- $GLOBALS
- Obsahuje odkaz na každou proměnnou, která je momentálně dostupná v globálním kontextu skriptu. Klíči tohoto pole jsou názvy globálních proměnných.
- $_SERVER
- Proměnné nastavované WWW serveru nebo jinak přímo spjaté s prováděcím prostředím aktuálního skriptu. Analogické starému poli $HTTP_SERVER_VARS (které je stále dostupné, ale zavržené).
- $_GET
- Proměnné poskytované skriptu přes HTTP GET. Analogické starému poli $HTTP_GET_VARS (které je stále dostupné, ale zavržené).
- $_POST
- Proměnné poskytované skriptu přes HTTP POST. Analogické starému poli $HTTP_POST_VARS (které je stále dostupné, ale zavržené).
- $_COOKIE
- Proměnné poskytované skriptu přes HTTP cookies. Analogické starému poli $HTTP_COOKIE_VARS (které je stále dostupné, ale zavržené).
- $_FILES
- Proměnné poskytované skriptu přes HTTP post uploady souborů. Analogické starému poli $HTTP_POST_FILES (které je stále dostupné, ale zavržené).
- $_ENV
- Proměnné poskytované skriptu z prostředí. Analogické starému poli $HTTP_ENV_VARS (které je stále dostupné, ale zavržené).
- $_REQUEST
- Proměnné poskytované skriptu přes libovolný vstupní mechanismus, a kterým proto nelze důvěřovat. Pozn.: při běhu z příkazové řádky zde nebudou přítomny položky argv a argc; nacházejí se v poli $_SERVER. Přítomnost a pořadí proměnných v tomto poli se definuje podle konfigurační direktivy variables order. Toto pole nemá přímou analogii ve verzích PHP před 4.1.0.
- $_SESSION
- Proměnné, které jsou momentálně registrovány v aktuální relaci skriptu. Analogické starému poli $HTTP_SESSION_VARS (které je stále dostupné, ale zavržené).
Kontext („scope“) proměnné
Kontext proměnné je oblast, ve které je definována. Většina proměnných v PHP má pouze jediný kontext. Ten zahrnuje i soubory vložené pomocí „include“ nebo „require“.
Například:
$a = 1;
include "b.inc";
?>
Zde bude proměnná $a dostupná ve vloženém skriptu b.inc. Avšak uvnitř uživatelsky definovaných funkcí se zakládá jejich lokální kontext. Jakákoli proměnná použitá uvnitř funkce je implicitně omezena na tento místní kontext.
Například:
$a = 1; /* globální kontext */
function Test()
{
echo $a; /* odkaz na proměnnou v lokálním kontextu */
}
Test();
?>
Tento skript nevyprodukuje žádný výstup, protože konstrukt echo
odkazuje na lokální verzi proměnné $a a ta nemá v tomto kontextu přiřazenu žádnou hodnotu. Můžete si všimnout, že to je trochu jiné než v jazyce C, kde jsou globální funkce automaticky dostupné ve funkcích, pokud nejsou specificky zastíněny lokální definicí. To může způsobit problémy tím, že člověk může nechtěně změnit globální proměnnou. V PHP musí být globální proměnné deklarovány uvnitř funkce jako globální, pokud se v ní mají používat.
Příklad:
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
Výše uvedený skript vytiskne 3. Deklarací $a a $b ve funkci jako globálních proměnných se dosáhne toho, že při odkazování na proměnné se pracuje s jejich globální verzí. Počet globálních proměnných, se kterými lze ve funkci manipulovat, není omezen.
Druhým způsobem, jak přistupovat k proměnným z globálního kontextu, je použití speciálního pole $GLOBALS
, definovaného v PHP.
Předchozí příklad lze přepsat:
$a = 1;
$b = 2;
function Sum()
{
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sum();
echo $b;
?>
Aritmetické operátory
Vzpomínáte si na základní aritmetiku ze školy? Tohle je úplně stejné.
Aritmetické operátory:
Příklad | Název | Výsledek |
---|---|---|
$a + $b |
Sčítání | Součet $a a $b |
$a - $b |
Odčítání | Rozdíl $a a $b |
$a * $b |
Násobení | Součin $a a $b |
$a / $b |
Dělení | Podíl $a a $b |
$a % $b |
Zbytek | Zbytek po dělení $a a $b |
Operátory přiřazení
Základním přiřazovacím operátorem je =
. Mohli byste si zprvu myslet, že se jedná o „rovná se“. Nikoliv. Skutečně to znamená, že se levému operandu přiřadí hodnota výrazu vpravo (tj. „nastav na“, „přiřaď do“ atd.). Hodnotou výrazu přiřazení je hodnota, která se přiřazuje, tj. hodnotou $a = 3
je číslo 3. To vám umožňuje provádět různé triky.
Příklad:
$a = ($b = 4) + 5; // $a se ted rovná 9 a $b bylo nastaveno na 4.
?>
Kromě základního operátoru přiřazení existují ještě „kombinované operátory“ pro všechny binární aritmetické a řetězové operátory, které umožňují použít hodnotu ve výrazu a pak hodnotu tohoto výrazu přiřadit zpět.
Příklad:
$a = 3;
$a += 5; // nastaví $a na hodnotu 8, jako kdybychom řekli: $a = $a + 5;
$b = "Ahoj ";
$b .= "tam!"; // nastaví $b na "Ahoj tam!", přesně tak, jako $b = $b . "tam!";
?>
Úkol: Vezměte si čísla 5; 15; 4 a napište kód, kde použijete aritmetické operátory, a přes definovanou proměnnou zobrazte výsledek.