Výpis (funkce) - Český PHP manuál
V tomto dílu PHP tutoriálů si ukážeme funkce pro výpis. PHP jich má poměrně mnoho, ukažme si ty nejpoužívanější.
echo
Echo je základní funkce pro výpis, předané parametry jsou jednoduše vypsány do dokumentu, který je následně klientovi poslán. Přesněji se nejedná o funkci, ale konstrukci. To nám umožňuje vynechávat závorky, často se to tak i dělá.
Parametry
Libovolný počet libovolných parametrů, které jsou následně vypsány. Funkce samozřejmě umožňuje vypsat i proměnné a to i jiných typů, než string.
Příklad
Následující kód vypíše do kódu dokumentu Hello itnetwork:
<?php echo 'Hello itnetwork!';
Nyní vypíšeme obsah proměnné:
<?php $den = 7; echo $den;
Při zadání více parametrů dojde k jejich konkatenaci (spojení v jeden text). Jelikož se výsledek vždy převede na řetězec, můžeme do parametru vkládat vše, co již bylo řečeno v tutoriálu Práce s řetězci v PHP .
printf
Printf umožňuje vypsat formátovaný výstup. Jednoduše řečeno vytvoříme šablonu textu a do ni vložíme proměnné, vyhneme se tak konkatenaci, která může být nepřehledná. Daní za přehlednost je nižší rychlost funkce.
Parametry
Prvním parametrem je formát, tedy šablona textu. Dalšími parametry jsou proměnné, které se do šablony vloží namísto zástupných znaků.
Zástupné znaky ve formátu jsou:
- %b - celé číslo bude zformátováno jako binární.
- %c - celé číslo bude zformátováno jako znak s příslušnou ASCII hodnotou.
- %d - celé číslo bude zformátováno jako celé číslo.
- %e - argument je interpretován jako číslo ve vědeckém zápisu (např. 1.5e+3)
- %E - to samé jako předchozí, pouze s velkým E.
- %u - celé číslo je zformátováno jako unsigned (celé kladné číslo většího rozsahu).
- %f - argument je zformátován jako desetinné číslo.
- %F - argument je zformátován jako desetinné číslo bez ohledu na regionální nastavení (desetinný separátor).
- %g - zkratka pro %e a %f.
- %G - zkratka pro %E a %f.
- %o - celé číslo je zformátováno do osmičkové soustavy.
- %s - argument je interpretován jako textový řetězec.
- %x - celé číslo je zformátováno do šestnáctkové soustavy.
- %X - celé číslo je zformátováno do šestnáctkové soustavy, kde jsou použita velká písmena.
Uveďme si příklad:
Příklad
<?php printf("Ahoj %s,\nje mi %d let.", 'Petře', 22);
A výsledek:
"Ahoj Petře je mi 20 let."
Pokud bychom potřebovali naformátovaný řetězec pouze vrátit a ne vytisknout na výstup, použijeme funkci sprintf se stejnými parametry.
Prohazování argumentů
Za znak procenta můžeme ještě uvést n$, kde n označuje n-tý argument funkce. Tedy %2$s označuje, že se má na tuto pozici vložit druhý argument. Takto můžeme argumenty vkládat vícekrát nebo v jiném pořadí, než jsou ve funkci uvedeny.
Zkusme si to:
<?php printf('Je mi %2$d let %1$s.', 'Petře', 22);
Výstup:
"Je mi 22 let Petře."
Zde je důležité uvést apostrofy, aby nebyly dolary interpretovány jako proměnné.
Jako poslední si ukážeme zformátování čísla na x míst:
<?php printf('Je mi %03d let.', 22);
Výstup:
Je mi 022 let.
Diagnostický výpis
Následující funkce slouží pouze pro diagnostické účely a na produkčním serveru (tedy tam, kde pojede ostrá verze webu) by se vůbec neměly objevit.
Při ladění aplikace občas potřebujeme zjistit obsah nějaké proměnné. Výpis obyčejným echem nás mnohdy neuspokojí, jelikož např. hodnota null nebude vypsána, stejně tak nepoznáme hodnotu false, true a podobně. Zkusme si vypsat echem různé datové typy:
Příklad
<?php $a = null; $b = true; $c = array(1, 2, 3, 'klic' => 'hodnota'); echo $a, '<br />'; echo $b, '<br />'; echo $c, '<br />';
Výstup:
1 Array
Null se nevypsal vůbec, u true nevíme, zda je to true nebo 1, u pole se vypsala pouze informace, že proměnná je pole. Podívejme se na další funkce pro výpis.
print_r
Print_r vypíše hodnoty v lidsky čitelné podobě. V praxi to znamená, že pole jsou hezky rozepsaná jako klíč => hodnota. Předejme funkci naše původní data:
<?php $a = null; $b = true; $c = array(1, 2, 3, 'klic' => 'hodnota'); print_r($a); echo('<br />'); print_r($b); echo('<br />'); print_r($c); echo('<br />');
Výstup:
1 Array ( [0] => 1 [1] => 2 [2] => 3 [klic] => hodnota )
Pro výpis polí je funkce opravdu perfektní, bude se nám hodit, jelikož občas je dobré se přesvědčit, že je v poli uloženo opravdu to, co si myslíme. U prvních 2 případů se však výpis nezlepšil.
Pokud chceme, aby funkce svůj výstup pouze vrátila (nikoli vypsala), stačí uvést 2. parametr s hodnotou true.
var_dump
Funkce var_dump vypíše (i vrátí) argument ve formátu, který je lidsky čitelný a který navíc obsahuje datové typy. Předejme funkci opět naše data:
<?php $a = null; $b = true; $c = array(1, 2, 3, 'klic' => 'hodnota'); var_dump($a); echo('<br />'); var_dump($b); echo('<br />'); var_dump($c); echo('<br />');
Výstup:
NULL bool(true) array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) ["klic"]=> string(7) "hodnota" }
To už je pro programátora velmi přínosné.
die
Jak již název napovídá, funkce die zastaví vykonávání skriptu. Předtím však vypíše své parametry. Nabízí se k použití s funkcí var_dump. Takto můžeme při hledání chyb svůj program jednoduše "krokovat" , umisťovat die(var_dump($promenna)) na různá místa programu a zjišťovat, zde jsou v tomto bodě správná data.
Ekvivalentem funkce je metoda nebo konstrukce exit, která má stejné parametry a i dělá to samé.
Die bývá často nesprávně uváděna v učebních materiálech k výpisu chyb. Ideálně by se to mělo řešit pomocí výjimek. I bez nich by se však aplikace neměla takto násilně ukončit, ale chybu nějak elegentně vypsat např. do indexu se šablonou.