Základy PHP

1. Komentáře

1.1 jednořádkové - #, // víceřádkové - /* ... */

2. Výstup

2.1 echo - vrací void

2.2 print - vrací boolean, trošku pomalejší

2.3 printf - to samé jako print, akorát navíc argument format pro formátování

2.4 sprintf - to samé jako printf, akorát se nepředá na výstup, ale přiřadí se nějakému řetězci

3. Složené datové typy

3.1 Pole - shromažďuje podobné prvky dohromady, umožňuje je uspořádat a odkazovat se na ně specifickým způsobem

3.2 Objekt - deklarován explicitně, deklarace uvnitř třídy class, z ní se pak pomocí new vytvoří objekt (instance)

4. Speciální datové typy

4.1 Resource - handle jsou tímto typem a drží ukazatel na připojené zařízení

4.2 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()

5. Přetypování

5.1 (typ)$promenna

5.2 Jakýkoliv datový typ lze převést na objekt, proměnná se stane atributem objektu a atribut bude mít název scalar.

5.3 $celkem = "45 něčeno"; $prijizdi = 10; $celkem = $prijizdi + $celkem; // $celkem = 55

5.3.1 protože $celkem začíná celým číslem - kdyby nezačínalo, tak se vezme 0

5.4 settype(promenna, typ) - vraci true nebo false

5.5 gettype(promenna) - vraci typ promenne

5.6 is_double(promenna)

6. Identifikátory

6.1 - začínat písmem nebo podtržítkem - rozlišuje se velikost písmen

7. Proměnné

7.1 Přiřazení hodnotou - $barva = "červená";

7.2 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"

8. Obor proměnné

8.1 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

8.2 Parametry funkce - argumenty v záklaví fce, nejsou dostupné jakmile práce fce skončí

8.3 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

8.4 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Í

9. Superglobální proměnné

9.1 $_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']

9.2 $_GET

9.3 $_POST

9.4 $_COOKIE - nastavené pomocí fce setcookie()

9.5 $_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

9.6 $_ENV - informace týkající se podkladového serverového prostředí $_ENV['HOSTNAME'] - hostitelský název serveru $_ENV['SHELL'] - systémový shell

9.7 $_REQUEST - zachycuje všecko možné, zaznamenává proměnné předávané do skriptů, není bezpečné

9.8 $_SESSION - obsahuje infotmace týkající se všech proměnných sezení

9.9 $GLOBALS - obsahuje výpis všech proměnných s globálním oborem, dostaneme se k nim pomocí print_r($GLOBALS);

10. Proměnné proměnné

10.1 $recept = "špagety"; $$recept = " a masové kuličky"; print $recept.$špagety; print $recept.${$recept}; // obě vypíší "špagety a masové kuličky"

11. Konstatny

11.1 - 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í

12. Operátory

12.1 +=, *=, /=, .=

12.2 = má asociativitu zprava doleva

12.3 ++$a vs. $a++

12.3.1 $oldInv = $inv++; // do oldInv se přiřadí hodnota $inv a teprve pak se k $inv přičte 1

12.3.2 $origInv = ++$inv; // přičte se 1 k $inv a pak se $inv přiřadi k $origInv

12.4 Ternární operátor: ($a == 12) ? 5 : -1 // rovná-li se a 12, návratová hodnota 5, jinak -1

13. Řetězce

13.1 Uvozovky ""

13.1.1 Parser zvládne patřičné proměnné i řídící znaky.

13.2 Apostrofy ''

13.2.1 Řetězec se bude interpretovat přesně tak jak je je napsaný.

13.3 heredoc

13.3.1 Pro vypsání většího množství textu. Nemusíme řetězec uzavírat do uvozovek ani apostrofů.

13.3.2 Př: <? $website = "aa"; echo <<<NASNAZEV <p>....<a href="$website">...</a> NASNAZEV; ?>

13.3.3 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.

14. Řídící struktury

14.1 Declare

14.1.1 Příkazem declare se určuje frekvence vykonávání specifického bloku kódu.

14.2 Switch

14.2.1 switch($promenna) { case "aaa": echo "bbb"; break; default: echo "ccc"; }

14.3 do { ... } while(...)

14.3.1 Provede se alespoň jednou.

14.4 Foreach (pro procházení polí)

14.4.1 foreach ($pole as $hodnota) { echo $hodnota; }

14.4.2 foreach ($pole as $klic => $hodnota) { echo $klic.$hodota; }

14.5 Break

14.5.1 Okamžitě se ukončí vykonávání bloku (do, while, for, foreach, switch).

14.6 Continue

14.6.1 Ukončí vykonávání aktuální iterace a pokračuje se zahájením další iterace.

15. Vkládání souborů

15.1 include()

15.1.1 Vloží soubor přesně na to místo, kde je tento výraz.

15.1.2 V podmínce musí být vždy obklopeno {}.

15.1.3 Kód nalezený ve vkládaném souboru zdědí obor proměnných podle umístění svého volajícího.

15.2 include_once()

15.3 require()

15.3.1 1. Soubor se vždy vloží do skriptu bez ohledu na to, kde je jeho volání (např. i v podmínce, která bude false).

15.3.2 2. Vykonávání skriptu se zastaví, jestliže require() selže.