LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> PHP (12) - Podmínky

PHP má samozřejmě příkazy pro řízení toku programu. Dnes se podíváme na podmínky.

16.6.2004 15:00 | Petr Zajíc | Články autora | přečteno 113325×

Tok programu, tedy i tok skriptu v PHP jen zřídkakdy probíhá od začátku do konce po jedné linii. Většinou chcete reagovat na okolní podmínky. K tomu slouží v PHP, stejně jako snad ve všech ostatních exisujících programovacích jazycích podmínky.

Podmínky fungují v tom nejjednodušším případě tak, že nejprve je vyhodnocen určitý výraz. Je-li výraz pravdivý, provede se příkaz. PHP má pro podmínku klíčové slovo if. Typický příklad můžeme vidět níže:

<?
$pristup_odepren
= TRUE;
if (
$pristup_odepren) echo "Na tuto stránku se nemůžete dostat bez autorizace";
?>

Vidíme, že logický výraz je v tomto příkladu reprezentován proměnnou. Když je podmínka splněna, provede se příkaz echo; to bude v našem případě vždy. Co když ale budeme chtít provést více než jeden příkaz? A co když budeme chtít specifikovat i příkaz, který se má provést při nesplnění podmínky? To demonstrujeme v následující ukázce, která je rozšířením původního příkladu:

<?
$pristup_odepren
= FALSE;
if (
$pristup_odepren)
  {
  echo
"Na tuto stránku se nemůžete dostat bez autorizace <BR>";
  echo
"Vaše IP adresa byla zaznamenána do protokolu.";
  }
else
  {
  echo
"Vítejte na této stránce<BR>";
  echo
$pocetnavstev++;
  }
?>

Jak vidíte, při nesplnění podmínky postupuje program větví, která začíná slovem else. Z příkladu také vyplývá, že více příkazů může bých chápáno jako jeden příkaz, když jsou uzavřeny do složených závorek { a }. Známe ještě jednu formu příkazu if. Její rozšíření spočívá v tom, že zavádí klíčové slovo elseif a program tak může reagovat na několik podmínek za sebou. Dejme tomu:

<?
if ($browser=="Mozilla") echo "Výborně !!!";
elseif (
$browser=="Konqueror") echo "Dobře .";
elseif (
$browser=="Explorer") echo ";-(";
else echo
"Nepodařilo se zjistit Váš browser";
?>

Kód je myslím výmluvný; všimněte si, že větví elseif může být i více. Není vůbec nutné v každé větvi vyhodnocovat stejný výraz, důležité je pouze to, aby se vyhodnocoval výraz vracející logickou hodnotu.

Podmínka if má v PHP i alternativní syntaxi zápisu. Níže uveďme naše tři příklady přepsané alternativně:

<?
//příklad první
$pristup_odepren = TRUE;
if (
$pristup_odepren):
    echo
"Na tuto stránku se nemůžete dostat bez autorizace";
endif;
//příklad druhý
if ($pristup_odepren):
  echo
"Na tuto stránku se nemůžete dostat bez autorizace <BR>";
  echo
"Vaše IP adresa byla zaznamenána do protokolu.";
else:
  echo
"Vítejte na této stránce<BR>";
  echo
$pocetnavstev++;
endif;
// příklad třetí
if ($browser=="Mozilla"):
    echo
"Výborně !!!";
elseif (
$browser=="Konqueror"):
    echo
"Dobře .";
elseif (
$browser=="Explorer"):
    echo
";-(";
else:
    echo
"Nepodařilo se zjistit Váš browser";
endif;
?>

Jak je z ukázky pěkně vidět, někdy to kód zkrátí, jindy ne. Praxe je ta, že se to většinou mixuje.

Příkaz switch

Jak bylo vidět z příkladu s browsery, často potřebujeme opakovaně vyhodnocovat stejný výraz a podle jeho hodnoty provést odpovídající akci ve skriptu. K tomu může sloužit příkaz if, nebo má PHP příkaz switch. Přepišme náš "browserový" příklad pomocí switch:

<?
switch ($browser)
{
  case
"Mozilla":
    echo
"Výborně !!!";
    break;
  case
"Konqueror":
    echo
"Dobře .";
    break;
  case
"Explorer":
    echo
";-(";
    break;
  default:
    echo
"Nepodařilo se zjistit Váš browser";
}
?>

K dispozici je rovněž alternativní syntaxe

<?
switch ($browser):
  case
"Mozilla":
    echo
"Výborně !!!";
    break;
  case
"Konqueror":
    echo
"Dobře .";
    break;
  case
"Explorer":
    echo
";-(";
    break;
  default:
    echo
"Nepodařilo se zjistit Váš browser";
endswitch;
?>

Funguje to následovně: Jedřív se zjistí hodnota proměnné $browser. Pak se procházejí jednotlivé větve a když se narazí na odpovídající případ, provede se větev až k příkazu break, nebo do endswitch. Default je větev, kterou můžeme volitelně zařadit pro případ, že nevyhoví nic z předchozích. Když zapomenete na příkaz break, provede se kód až k nejbližšímu dalšímu příkazu break nebo do konce podmínky (což se někdy dělá schválně a jindy to vede k chybám).

Poznámky k podmínkám

  • Bez podmínek se v programování neobejdete. Naučte se je. Z hlavy.
  • Příkaz v některé větvi podmínky může být zase podmínka. Vnořené podmínky jsou někdy potřeba, ale mohou pěkně znepřehlednit kód.
  • Zvažte použití větve else v podmínce vždy, když si nejste absolutně jisti, že větve elseif pokrývají všechny alternativy. Stejnětak větev default v příkazu switch.
  • Formátujte kód tak, abyste se v něm vyznali. Někdy může formátovací plugin Vašeho oblíbeného PHP editoru udělat hotový zázrak.
  • KOMENTUJTE. Podmínky mohou být složité a za půl roku, když budete potřebovat skript oprášit už nebudete vědět, proč jste je psali.
  • Vyhodnocovaný výraz musí být v závorkách a PHP nemá klíčové slovo THEN. To je zvláště potřeba si uvědomit, pokud přecházíte na PHP z ASP.
  • Jestliže je příkaz v některé větvi podmínky složený z mnoha dílčích příkazů, zvažte použití funkcí. Bude o nich v seriálu zanedlouho řeč.
  • Jestliže podmínka slouží k vložení html kódu v jedné nebo více větvích, možná budete chtít uzavřít kód PHP (?>), abyste se vyhnuli dlouhým sadám příkazů echo.

Verze pro tisk

pridej.cz

 

DISKUZE

Někdy může formátovací plugin Vašeho oblíbeného PHP editoru udělat hotový zázrak. 7.3.2010 13:02 Vašek Keberdle
  L Re: Někdy může formátovací plugin Vašeho oblíbeného PHP editoru udělat hotový zázrak. 7.3.2010 16:27 Aleš Hakl




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

4.10.2018 21:30 /Ondřej Čečák
LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář

18.9.2018 23:30 /František Kučera
Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business. Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář

12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

18.6.2018 0:43 /František Kučera
Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.
Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

5.10.2018 17:12 / Jakub Kuljovsky
Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?

20.9.2018 10:04 / Jan Ober
Jaký kurz a software by jste doporučili pro začínajcího kodéra?

20.9.2018 10:00 / Jan Ober
Re: Gimp

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze