PHP kód se píše přímo do stránky, podobně jako HTML. Může se dokonce s HTML kombinovat. Aby tedy bylo poznat odkud kam PHP sahá, musí se označit začátek a konec skriptu. Obvyklý způsob, který se bude běžně používat v této učebnici, je začít skript značkou <?php a ukončit ?>.
Ukončovací značku není třeba psát u PHP kódu, který sahá až do konce souboru. Za konec PHP kódu se v takovém případě jednoduše považuje konec souboru. To může být někdy užitečné, později v této učebnici si takové situace ukážeme.
Kromě uvedeného zápisu se můžete se setkat i se zkráceným, kdy skript začíná jen <? a končí ?>. Jeho fungování ale závisí na nastavení PHP (konkrétně na nastavení SHORT_OPEN_TAGS) a používáte-li na webu XML, může to způsobit problémy v kombinaci s jeho procesními instrukcemi, které se zapisují úplně stejně. Existuje ještě pár dalších způsobů označení PHP skriptu, ale ty se prakticky nepoužívají.
Pojďme tedy na první skript. Začneme tradičním prvním příkladem v programování, zvaným anglicky Hello world, česky Ahoj světe, který vypíše jednoduchý text do stránky. V editoru si založte projekt, vytvořte nový PHP soubor a vložte do něj následující kód:
<?php //vypíše pozdrav echo "Ahoj světe!"; ?>
1. Ohraničení PHP skriptu. Jak už jsme si řekli, skript je ohraničený počáteční a koncovou značkou PHP. Části souboru, které nejsou označené jako PHP skript, se berou prostě jako text a vypíší se do stránky tak jak jsou (později si ukážeme, jak může PHP skript zařídit, že se část mimo skript nevypíše). Takže toto bude fungovat:
<!-- Normální HTML kód --> <p class="pozdrav"> <?php echo "Ahoj!"; // Toto PHP zpracuje ?> <!-- A zase HTML kód --> </p>
<?php // Toto nebude fungovat, uvnitř PHP značek musí být platný PHP kód <p class="pozdrav"> echo "Ahoj!"; </p>
3. Příkaz echo Příkaz echo vypíše text do stránky.
4. Komentáře Text za dvěma lomítky až do konce řádku je komentář a při zpracování skriptu se ignoruje. Místo dvou lomítek lze použít i mřížku (#). Existují také víceřádkové komentáře, začínají /* (lomítko a hvězdička) a končí */ (hvězdička a lomítko). Všimněte si, že zvýrazňovač syntaxe komentáře barevně odliší. Komentáře můžete použít i pro tzv. zakomentování částí skriptu při ladění a testování (například když chcete spustit skript jehož část není hotová nebo hledáte chybu).
<?php // komentář # také komentář /* tento komentář lze zapsat přes více řádků */ // Následující příkaz je zakomentovaný, nebude proveden: # echo "Ahoj!"; ?>
5. Řetězce Text, neboli řetězec, se uzavírá do uvozovek. Možná si kladete otázku, jak se tedy vypíší uvozovky. Od toho je takzvané escapování: Pokud se před znakem, který by jinak měl nějaký speciální význam pro PHP, nachází zpětné lomítko (\), zruší se tento speciální význam. Tedy \" neukončí řetězec, ale jen vypíše uvozovku. Analogicky pro vypsání zpětného lomítka musíte v kódu mít dvě zpětná lomítka (první ruší speciální význam druhého). Kromě uvozovek se řetězec může uzavřít i do apostofů: 'řetězec'. Pak můžete uvnitř řetězce používat uvozovky (protože zde nemají speciální význam), zpětným lomítkem se musí escapovat pouze apostrof a zpětné lomítko. Řetězec v uvozovkách má speciálních znaků více, kromě uvozovek a zpětného lomítka je to také znak dolaru ($), o jehož funkci si ještě povíme později v této učebnici. Dále lze v řetězci v uvozovkách používat speciální kombinace pro vypsání znaků jako tabulátor, odřádkování a podobně. Jejich přehled najdete [odkaz]v manuálu[/odkaz].
Všimněte si také, že zvýrazňovač PHP syntaxe řetězce barevně odliší. Dejte ale pozor, abyste řetězce dali skutečně do apostrofů nebo horních rovných uvozovek, nepoužívejte typografické uvozovky („“) jako dělá např. Word, diakritickou čárku (´) a podobně. Na typické české klávesnici jsou uvozovky na stejné klávese jako ů a apostrof na stejné klávese jako přehláska, tzn. uvozovky se napíší shift + ů, apostrof shift + ¨. Na typické anglické klávesnici je obojí na jedné klávese (je tam klávesa apostrof a uvozovky jsou shift + ').
Jak jsme si řekli, HTML kód samostatně v PHP skriptu být nemůže. Ale můžeme ho vypsat příkazem echo: <?php echo "<p class=\"pozdrav\">Ahoj světe!</p>"; echo '<p class="pozdrav">Ahoj světe!</p>'; // tento příkaz dá stejný výsledek jako předchozí ?> (všimněte si také použití uvozovek, apostrofů a zpětných lomítek)
Kromě textových řetězců můžeme v příkazu echo použít i tzv. výrazy, tedy určité výpočty.
<?php echo 27 + 15; // vypíše 42 ?>
<?php echo "12 - 2"; // řetězec, vypíše se 12 - 2 echo 12 - 2; // výraz, vypíše se 10 ?>
Už tedy umíme první příkaz, echo. Zatím ale nám ale PHP v praxi moc nepřineslo oproti přímému zápisu do HTML.
Pojďme tedy na praktičtější příklady a zároveň se naučíme i druhý PHP příkaz: include
.
Příkaz include vloží do stránky obsah zadaného souboru. Je to tedy způsob, jak mít například společnou hlavičku
webu v jednom souboru a vkládat ji do všech stránek.
Jak include funguje? Z předchozího příkladu již máme vytvořený soubor prvni.php s obsahem:
<?php //vypíše pozdrav echo "Ahoj světe!"; ?>
<?php // vloží soubor prvni.php include "prvni.php"; ?>
include "prvni.php";
se nahradil obsahem souboru prvni.php. A protože v prvni.php je PHP skript,
PHP ho zpracovalo a vložil se výstup skriptu.
Poznámka: Vložený soubor se zpracovává odděleně od prostředí souboru odkud byl vložen, takže například ve vloženém
skriptu musí znovu být počáteční značka PHP, jinak se skript nezpracuje.
Existuje také příkaz require
, který funguje úplně stejně jako include. Jediný rozdíl je
v případě, kdy ten vkládaný soubor neexistuje. V takovém případě include generuje varování (warning) a pokračuje
ve skriptu, zatímco require generuje fatální chybu (fatal error) a ukončí zpracování skriptu.
Na chybové hlášky se ještě podíváme blíže v příští kapitole.
Příkaz require je tedy vhodný pro situace, kdy bez vloženého souboru nelze ve skriptu rozumně pokračovat.
<?php // Pokud soubor existuje, funguje toto úplně stejně jako předchozí příklad require "prvni.php"; ?>
mb_internal_encoding
nastavíme interní kódování na UTF-8. Pokud chceme v PHP pracovat i s jinými znaky než
anglickou abecedou (což v češtině budeme chtít), je bezpečnější interní kódování nastavit na stejné, jako je kódování
souborů se skriptem, tzn. obvykle UTF-8.
Vytvořte tedy soubor spolecna_hlavicka.php s obsahem:
<?php mb_internal_encoding("UTF-8"); ?> <!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Příklad z učebnice PHP</title> </head>
include "spolecna_hlavicka.php";
<?php phpinfo(); ?>
Některé funkce také přijímají hodnoty, takzvané argumenty (nebo parametry, anglicky parameters). Argumenty se píší dovnitř závorek, které jsou za názvem funkce. Pokud je argumentů více než jeden, oddělují se čárkami. Funkce také může mít pro argument nastavenou výchozí hodnotu. Pak při volání funkce nemusí být uveden a použije se místo něj výchozí hodnota. Přikladem může být funkce trim(). Tato funkce slouží k odstranění nežádoucích znaků na začátku a konci řetězce. Má dva argumenty: První je řetězec se kterým se má pracovat, druhý je řetězec obsahující výčet znaků, které se mají odstranit. Druhý argument má výchozí hodnotu, a sice: Mezera, tabulátor, odřádkování a málokdy používané znaky NUL a vertikální tabulátor. Volání funkce trim() pak může vypadat takto:
<?php trim("..:::Toto je řetězec:::...", ".:"); // Odstraní tečky a dvojtečky na začátku a konci uvedeného řetězce trim(" Ahoj "); // Druhý argument nemusí být uveden, pak se použije výchozí hodnota, viz výše ?>
1. Zkuste si v editoru napsat libovolný kód obsahující příkazy echo, řetězce, komentáře a výrazy. Nemusíte ho ukládat, jen sledujte, jak editor zvýrazňuje různé PHP konstrukce.
2. Vytvořte soubor k4_cv1.php. V něm vytvořte v HTML základní kostru stránky s odstavcem v těle stránky. Do odstavce vložte text pomocí PHP. Zkontrolujte kód stránky v prohlížeči.
3. Vytvořte soubor k4_cv2.php, vymyslete pro něj podobný HTML kód jako v předchozím příkladu, ale celý ho vypište pomocí PHP. Zkontrolujte kód stránky v prohlížeči.
4. Vytvořte soubor k4_paticka.php a v něm pomocí HTML vytvořte prvek <div> s textem pro zápatí webu. Použijte PHP pro vložení této patičky do stránek k4_cv1.php a k4_cv2.php.
5. S pomocí výpisu phpinfo() zjistěte hodnotu nastavení ERROR_REPORTING svého serveru.