printf - to samé jako print, akorát navíc argument format pro formátování
sprintf - to samé jako printf, akorát se nepředá na výstup, ale přiřadí se nějakému řetězci
Složené datové typy
Pole - shromažďuje podobné prvky dohromady, umožňuje je uspořádat a odkazovat se na ně specifickým způsobem
Objekt - deklarován explicitně, deklarace uvnitř třídy class, z ní se pak pomocí new vytvoří objekt (instance)
Speciální datové typy
Resource - handle jsou tímto typem a drží ukazatel na připojené zařízení
Null - rozpoznává jedinou hodnotu Null, hodnota není nebo chybí - bylo nastavenou na žádnou hodnotu, byla ji přiřazena hodnota Null, byla odstraněna pomocí funkce unset()
Přetypování
(typ)$promenna
Jakýkoliv datový typ lze převést na objekt, proměnná se stane atributem objektu a atribut bude mít název scalar.
protože $celkem začíná celým číslem - kdyby nezačínalo, tak se vezme 0
settype(promenna, typ) - vraci true nebo false
gettype(promenna) - vraci typ promenne
is_double(promenna)
Identifikátory
- začínat písmem nebo podtržítkem
- rozlišuje se velikost písmen
Proměnné
Přiřazení hodnotou - $barva = "červená";
Přiřazení odkazem - vytvoříme proměnnou, která se odkazuje na stejný obsah jako nějaká jiná proměnná
$hodnota1 = "Ahoj";
$hodnota2 =& $hodnota1;
$hodnota2 = "Nashle";
// obe hodnoty obsahují "Nashle"
Obor proměnné
Lokální proměnné - deklaruje se uvnitř nějaké fce, dá se na ní odkazovat pouze uvnitř této fce, jakékoliv přiřazení vně se bude považovat za zcela jinou proměnnou
Parametry funkce - argumenty v záklaví fce, nejsou dostupné jakmile práce fce skončí
Globální proměnné - můžeme k nim přistupovat v kterékoliv části programu, chceme-li nějakou fci modifikovat, musíme ji explicitně deklarovat jako globální v té fci, kde má být modifikována - pomocí GLOBAL
Statické proměnné - při ukončení fce sbou hodnotu neztratí a bude ji stále mít až se fce zavolá znovu, klíčové slovo STATIC
UŽITEČNÉ U REKURSIVNÍCH FUNKCÍ
Superglobální proměnné
$_SERVER - obsahuje informace, které vytvoří webový server
$_SERVER['HTTP_REFERER']
$_SERVER['REMOTE_ADDR']
$_SERVER['REQUEST_URI'] - část URL vyjadřující cestu
$_SERVER['HTTP_USER_AGENT']
$_GET
$_POST
$_COOKIE - nastavené pomocí fce setcookie()
$_FILES - informace o datech, která byla na server nahrána metodou post, jedná se o 2 rozměrné pole s 5 prvky
$_FILES['upload_name']['name'] - původní název souboru klienta
$_FILES['upload_name']['type'] - MIME typ, záleží na schopnostech prohlížeče
$_FILES['upload_name']['size']
$_FILES['upload_name']['tmp_name'] - dočasný název na serveru než se presune na finální umístěni
$_FILES['upload_name']['error'] - stavový kód nahrání
UPLOAD_ERR_OK - úspěšně se nahrál
UPLOAD_ERR_INI_SIZE - velikost přesáhla max povolenou velikost, která byla nastavena direktivou upload_max_filesize
UPLOAD_ERR_FORM_SIZE - velikost přesáhla povolenou velikost, kterou stanovil volitelný parametr MAX_FILE_SIZE skrytého pole formuláře
UPLOAD_ERR_PARTIAL - nahrála se jen část souboru
UPLOAD_ERR_NO_FILE - v nahrávacím formuláři nebyl specifikován název souboru
$_ENV - informace týkající se podkladového serverového prostředí
$_ENV['HOSTNAME'] - hostitelský název serveru
$_ENV['SHELL'] - systémový shell
$_REQUEST - zachycuje všecko možné, zaznamenává proměnné předávané do skriptů, není bezpečné
$_SESSION - obsahuje infotmace týkající se všech proměnných sezení
$GLOBALS - obsahuje výpis všech proměnných s globálním oborem, dostaneme se k nim pomocí print_r($GLOBALS);
Proměnné proměnné
$recept = "špagety";
$$recept = " a masové kuličky";
print $recept.$špagety;
print $recept.${$recept};
// obě vypíší "špagety a masové kuličky"
Konstatny
- nejde je modifikovat v průběhu programu
- definují se fcí define()
- bool define(nazev, hodnota, case-insensitive (nepovinný));
- odkaz na ní nezačíná dolarem
- konstanty jsou globální
Operátory
+=, *=, /=, .=
= má asociativitu zprava doleva
++$a vs. $a++
$oldInv = $inv++; // do oldInv se přiřadí hodnota $inv a teprve pak se k $inv přičte 1
$origInv = ++$inv; // přičte se 1 k $inv a pak se $inv přiřadi k $origInv
Ternární operátor: ($a == 12) ? 5 : -1 // rovná-li se a 12, návratová hodnota 5, jinak -1
Řetězce
Uvozovky ""
Parser zvládne patřičné proměnné i řídící znaky.
Apostrofy ''
Řetězec se bude interpretovat přesně tak jak je je napsaný.
heredoc
Pro vypsání většího množství textu. Nemusíme řetězec uzavírat do uvozovek ani apostrofů.
Otevírací i zavírací identifikátory musejí být identické.
Dodržuje pro parser stejná pravidla, jaká platí u řetězců v uvozovkách.
Uzavírací identifikátor musí začínat úplně na začátku řádku.
Řídící struktury
Declare
Příkazem declare se určuje frekvence vykonávání specifického bloku kódu.