|
1.1 Historie a vývoj
Začátky vývoje PHP sahají do roku 1994 až 1995, kdy Rasmus Lerdorf uvolnil PHP jako open source. Jednalo se o velmi primitivní verzi a byla označována jako "Personal Home Page (PHP)".
V roce 1997 vzniklo PHP verze 2 označované jako "Personal Home Page Form Interpreter (PHP - FI)", které zavedlo zpracování a odesílání formulářových dat.
V roce 1998 PHP navázalo další verzí a to verzí 3, kde byl vytvořen nový parsing engine a došlo zároveň k změně významu zkratky PHP z "Personal Home Page" na "Hypertext Processor".
V dalších letech docházelo k výraznému rozšiřování funkcionality PHP, s čímž zároveň výrazně rostl počet uživatelů tohoto systému.
Další vývoj směřoval k novému parseru, který byl označen jako Zend Scripting Engine a vyústil v roce 2002 k vydání PHP 4 a stává se z něj jeden z nepopulárnějších a nejpoužívanějších skriptovacích jazyků na světě v oblasti webových aplikací. Tato verze výrazně zlepšila zacházení se systémovými prostředky, zavedla první funkce pro práci s OOP (objektově orientované programování), byla rozšířena podpora session, cookies a možností šifrování.
V roce 2004 vyšla další verze PHP 5, která používá Zend Engine 2. Hlavní změnou byla výrazně zdokonalená práce s OOP, zdokonalená práce s řetězci a bylo zavedeno zpracování výjimek (ošetření chyb).
1.2 Popis
PHP je již od svého počátku systémem, který nemá žádná omezení pro své používání, modifikaci, případně redistribuci. Nyní se takovému systému říká Open Source (jako například podobné projekty Linux a Apache). Tento software nemá licenční omezení jako většina placeného softwaru, uživatelé mohou tento software volitelně modifikovat, případně redistribuovat (hlavně díky dostupnosti zdrojových kódů).
PHP je v současnosti velice oblíbeným jazykem pro webové servery a počet instalací tohoto systému se neustále zvyšuje. Je to jazyk, který je jednoduše použitelný a přitom vyspělý, obsahuje velké množství dostupných knihoven a jejich funkcí, které umí spolupracovat a manipulovat s mnoha různými formáty souborů a dat.
Výhodou PHP je, že ho lze provozovat ve všech rozšířených operačních systémech, jako je především Linux, mnoho variant Unixu, MS Windows, Mac OS a na mnoha webových serverech, jako například Apache, MS IIS, Personal Web Server.
Dokáže dále spolupracovat se širokou škálou databází, jako například MySQL, PostgreSQL, MsSQL, Oracle, Informix. Navíc PHP podporuje spojení s databázemi pomocí ODBC (Open Database Connection).
Pro práci v tomto programovacím jazyku není potřeba žádné speciální vývojové prostředí, kód PHP lze psát v jakémkoliv textovém editoru.
Instalační soubory, manuály a podrobné popisy můžete získat na následujících adresách:
1.3 Princip tvorby dynamických stránek
- Klientský webový prohlížeč zašle požadavek o zobrazení stránky.
- Webový server tuto žádost zpracuje, načte si požadovaný soubor, zjistí, zda tento soubor je PHP skriptem (podle přípony souboru), pokud ne, pak přímo odešle tuto stránku zpět klientovi, pokud ano, předá tento kód ke zpracování PHP enginu.
- PHP engine začne vykonávat skript. Pokud skript obsahuje požadavek na provedení SQL dotazu, pošle dál tento požadavek na databázový server.
- Databázový server tento dotaz zpracuje a výsledek odešle zpět PHP enginu.
- PHP engine zpracuje data z databáze, naformátuje potřebné výstupy do HTML, výsledek odešle webovému serveru a ukončí vykonávání skriptu.
- Webový server pošle výsledné HTML klientskému webovému prohlížeči, který o tuto stránku požádal.
1.4 Základy PHP
1.4.1 Základní syntaxe oddělovačů PHP
Základní výhodou PHP je, že jeho kód můžeme vkládat do statického HTML. K tomu jsou použity 4 typy oddělovačů.
1) Nejpoužívanějším a základním oddělovačem je <?php ?>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
Toto je statické HTML.<BR>
<?php
echo 'Toto je vytvořeno pomocí PHP<BR>';
?>
</BODY>
</HTML>
2) krátká značka <? ?>
V konfiguračním souboru php.ini musí být zapnuto short_open_tag = On.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
Toto je statické HTML.<BR>
<?
echo 'Toto je vytvořeno pomocí PHP<BR>';
?>
</BODY>
</HTML>
3) oddělovač typu <script>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
Toto je statické HTML.<BR>
<script language="php">
echo 'Toto je vytvořeno pomocí PHP<BR>';
</script>
</BODY>
</HTML>
4) oddělovač typu ASP
V konfiguračním souboru php.ini musí být zapnuto asp_tags = On.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
Toto je statické HTML.<BR>
<%
echo 'Toto je vytvořeno pomocí PHP<BR>';
%>
</BODY>
</HTML>
Poznámka
Tyto oddělovače lze použít v jedné stránce tolikrát, kolikrát je potřeba.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
Toto je statické HTML.<BR>
<?php
echo 'Toto je vytvořeno pomocí PHP<BR>';
?>
Toto je další HTML.<BR>
<?php
echo 'Toto je další použití PHP<BR>';
?>
Další statické HTML.<BR>
<?php
echo 'Další výsledek zpracování PHP.<BR>';
?>
</BODY>
</HTML>
1.4.2 Oddělování příkazů
Každý příkaz PHP by měl mít na konci středník, který ho oddělí od dalšího příkazu.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
echo 'první příkaz<BR>';
echo 'druhý příkaz<BR><BR>';
?>
<?php
echo 'první příkaz<BR>'; echo 'druhý příkaz<BR><BR>';
?>
</BODY>
</HTML>
Oddělovací znak ; lze vynechat na konci bloku PHP (poslední příkaz před ?>).
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
echo 'první příkaz<BR>';
echo 'druhý příkaz<BR><BR>' //za tímto příkazem nemusí být ;
?>
<?php
echo 'první příkaz<BR>'; echo 'druhý příkaz<BR><BR>' //za tímto příkazem nemusí být;
?>
</BODY>
</HTML>
Pokud se vynechá středník za příkazem, který není posledním v bloku PHP, dojde k syntaktické chybě.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
echo 'první příkaz<BR>' //za tímto příkazem je nutný středník jako oddělovač od dalšího příkazu
echo 'druhý příkaz<BR><BR>';
?>
</BODY>
</HTML>
Pokud dojde k této chybě, uvidíte na obrazovce podobné chybové hlášení Parse error.
1.4.3 Komentáře
PHP podporuje komentáře v unixovém stylu nebo ve stylu, jaký používají jazyky C nebo C++. Část kódu, která je označena jako komentář, je PHP enginem ignorována.
1) Jednořádkový komentář ve stylu jazyka C++
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
echo 'první příkaz<BR>'; //jednořádkový komentář (platnost tohoto komentáře do konce řádku)
echo 'druhý příkaz<BR><BR>'; //jednořádkový komentář (platnost tohoto komentáře do konce řádku)
?>
</BODY>
</HTML>
2) Jednořádkový komentář ve stylu shellu
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
echo 'první příkaz<BR>'; #jednořádkový komentář (platnost tohoto komentáře do konce řádku)
echo 'druhý příkaz<BR><BR>'; #jednořádkový komentář (platnost tohoto komentáře do konce řádku)
?>
</BODY>
</HTML>
3) Víceřádkový komentář ve stylu jazyka C
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
/*
toto je víceřádkový komentář,
který může sloužit k obsáhlejšímu
popisu větších částí skriptu
*/
echo 'první příkaz<BR>';
/*
toto je víceřádkový komentář,
všechny příkazy uvnitř tohoto bloku
nebudou vykonány
echo 'první příkaz<BR>';
echo 'druhý příkaz<BR>';
echo 'třetí příkaz<BR>';
*/
echo 'čtvrtý příkaz<BR>';
?>
</BODY>
</HTML>
Poznámka
Víceřádkové komentáře se nesmí vnořovat. Nastane syntaktická chyba Parse error.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
echo 'první příkaz<BR>';
/*
toto je víceřádkový komentář,
všechny příkazy uvnitř tohoto bloku
nebudou vykonány
echo 'první příkaz<BR>';
/*
echo 'druhý příkaz<BR>';
*/
echo 'třetí příkaz<BR>';
*/
echo 'čtvrtý příkaz<BR>';
?>
</BODY>
</HTML>
Výsledná chyba zobrazená v prohlížeči:
Parse error: parse error, unexpected '*' in D:\web_server\prg4\index1i.php on line 20
1.4.4 Výstupy z PHP
Pro dynamické generování webových stránek potřebujeme prostředek pro realizování výstupů do těchto stránek.
Probereme zde dva základní příkazy pro výstupy a to příkaz echo a print.
1.4.4.1 Echo
Syntaxe:
echo (řetězcový parametr 1 [, řetězcový parametr 2, …])
Tento příkaz pošle na výstup parametry.
Příkaz echo není funkcí, jedná se o jazykový konstrukt. Proto se u něj nemusí používat závorky.
V případě výpisu více než jednoho parametru se závorky nesmí použít!
Příklad
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
$a="řetězec v proměnné";
$b="řetězec v proměnné b";
echo $a;
echo "<BR>";
echo $a, " a druhý ",$b;
echo "<BR>";
echo "text v uvozovkách";
echo "<BR>";
echo "text v uvozovkách plus $a";
echo "<BR>";
echo "víceřádkový
text uzavřený do uvozovek
- toto odřádkování se projeví ve výpisu zdrojového kódu";
echo "<BR>";
echo "text zalomený ve výpisu zdrojového \nkódu pomocí speciálního řídícího znaku";
echo "<BR>";
echo "některým znakům musí být předřazeno zpětné lomítko, aby se daly vypsat, např. \"";
?>
</BODY>
</HTML>
Standardní výstup echo uzavřený do uvozovek umožňuje, aby uvnitř uvozovek byly použity názvy proměnných ($a), PHP v tomto případě rozeznává i následující řídící posloupností znaků.
\n znak pro nový řádek ve zdrojovém kódu
\t znak tabulátoru
\\ zpětné lomítko
\$ znak dolaru
\" znak uvozovek
Příklad
Použití příkazu echo s využitím apostrofů. Text uzavřený do apostrofů je interpretován přesně tak, jak je napsán. Proměnné a řídící posloupnosti znaků se nebudou aplikovat a vypíší se jako text.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
$a='řetězec v proměnné';
echo $a;
echo '<BR>';
echo 'text v apostrofech';
echo '<BR>';
echo 'text v apostrofech plus $a - nevypíše obsah proměnné';
echo '<BR>';
echo 'víceřádkový
text uzavřený do apostrofů
- toto odřádkování se projeví ve výpisu zdrojového kódu';
echo '<BR>';
echo 'nefunguje zalamování textu ve výpisu zdrojového kódu pomocí speciálního řídícího znaku, tento znak \n se vypíše v prohlížeči';
echo '<BR>';
echo 'speciálním znakům ($, \, ") se nemusí předepisovat zpětné lomítko, znaky se vypíší v prohlížeči i bez lomítka; toto je potřeba udělat u apostrofu \'';
?>
</BODY>
</HTML>
1.4.4.2 Print
Syntaxe:
print(řetězcový parametr)
Tento příkaz pošle na výstup parametr.
Základní funkcionalita je stejná jako u příkazu echo až na následující rozdíly.
1. Příkaz echo umožňuje zobrazit více parametrů oddělených čárkami.
2. Echo se nedá použít ve složitějších výrazech (viz ukázka) narozdíl od příkazu print, který je funkcí.
Ukázka
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
(true) ? echo('výraz je pravdivý') : echo('výraz je nepravdivý');
?>
</BODY>
</HTML>
Zde je řešena stejná podmínka jako v předchozím příkladu, jen s využitím funkce print. Nedojde k vyhlášení chyby, prohlížeč vypíše "výraz je pravdivý".
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
(true) ? print('výraz je pravdivý') : print('výraz je nepravdivý');
?>
</BODY>
</HTML>
Možné řešení problému s využitím příkazu echo ve složitějším výrazu.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
echo (true) ? ('výraz je pravdivý') : ('výraz je nepravdivý');
?>
</BODY>
</HTML>
Domácí úkol
Zopakujte si historii vývoje PHP, princip tvorby dynamických stránek, základní zápis oddělovačů, komentářů, echo, print.
Shrnutí
- seznámili jste se s historií vývoje PHP
- umíte vysvětlit, k jakému procesu dochází, když si prohlížeč vyžádá zobrazení stránky
- umíte vložit PHP kód do HTML
- umíte vytvářet komentáře
- umíte použít příkazy echo a print
|