|
|
PHP
PHP (rekurzivní zkratka PHP: Hypertext Preprocessor, „PHP: Hypertextový preprocesor“, původně Personal Home Page) je skriptovací programovací jazyk, určený především pro programování dynamických internetových stránek. Nejčastěji se začleňuje přímo do struktury jazyka HTML, XHTML či WML, což lze využít při tvorbě webových aplikací. PHP lze použít i k tvorbě konzolových a desktopových aplikací.
PHP skripty jsou většinou prováděny na straně serveru, k uživateli je přenášen až výsledek jejich činnosti (interpret PHP skriptu je možné volat pomocí příkazové řádky). Syntaxe jazyka je inspirována několika programovacími jazyky (Perl, C, Pascal a Java). PHP je nezávislý na platformě, skripty fungují bez větších úprav na mnoha různých operačních systémech. Podporuje mnoho knihoven pro různé účely - např. zpracování textu, grafiky, práci se soubory, přístup k většině databázových systémů (mj. MySQL, ODBC, Oracle, PostgreSQL, MSSQL), podporu celé řady internetových protokolů (HTTP, SMTP, SNMP, FTP, IMAP, POP3, LDAP…)
PHP se stalo velmi oblíbeným především díky jednoduchosti použití a tomu, že kombinuje vlastnosti více programovacích jazyků a nechává tak vývojáři částečnou svobodu v syntaxi. V kombinaci s operačním systémem Linux, databázovým systémem (obvykle MySQL nebo PostgreSQL) a webovým serverem Apache je často využíván k tvorbě webových aplikací. Pro tuto kombinaci se vžila zkratka LAMP – tedy spojení Linux, Apache, MySQL a PHP nebo Perl.
Pomocí technologie PHP je naprogramovaná Wikipedie.
Takto v PHP vypadá skript Hello world:
<?php
echo "Ahoj, světe!";
?>
[editovat] Některé vlastnosti jazyka PHP
- Jazyk PHP je dynamicky typový, tzn. že datový typ proměnné se určí v okamžiku přiřazení hodnoty.
- Kvůli tomu má PHP dva operátory porovnání - '==' a '==='; při použití prvního dochází před porovnáním ke konverzi, při použití druhého je výraz pravdivý jen když jsou oba dva operandy stejného typu.
- Pole se dají indexovat číselnými indexy (jako v jazyce C), nebo mohou fungovat jako hash-mapa. Stejné pole může obsahovat oba typy indexů.
- Pole jsou heterogenní (stejné pole může obsahovat prvky různých typů) a řídká.
- Řetězce lze uzavírat do uvozovek (při vyhodnocení se provede nahrazení proměnných uvnitř) nebo do apostrofů (nahrazuje se jen escape sekvence \').
// Zde je v proměnné string (tečka je operátor spojování řetězců)
$retez = "Ahoj, světe" . ', mám se dobře' . " a nevadí, že střídám oddělovače";
// Zde je v proměnné číslo (int)
$cislo = 100;
// Do proměnné je možné dát pole, které obsahuje jak čísla, tak znaky či další pole
$pole = array('a', 'b', 1, 2, array('první' => 'podpole', 'vytištěno'));
// Nenahlásí chybu (jenom varování) a vytiskne 'Array'
print($pole);
// Vytiskne obsah proměnné pole
print_r($pole);
// Test porovnání
$cislo = 100;
$retez = '100';
// Toto porovnání ('==') platí díky automatické typové konverzi
if ($retez == $cislo)
{
echo 'Jsou stejné';
}
// Ale porovnání pomocí '===' neplatí, neboť nejsou stejné typy
if ($retez === $cislo)
{
echo 'To by nešlo';
}
- PHP do verze 4.2.0 ve výchozím nastavení automaticky přejímalo veškeré proměnné poslané jakoukoliv metodou (HTTP POST, HTTP GET, HTTP cookie, ale i ze zabudovaného mechanismu sessions) a umožňovalo s nimi dále pracovat jako s globálními - tato možnost představovala bezpečnostní riziko[1].
- Od verze 4.2.0 lze hodnotu získat z tzv. superglobálních proměnných s garancí původu informace - tedy že data byla odeslána požadovanou metodou. Používání globálních proměnných je stále možné pomocí konfigurační direktivy
register_globals povolit, ale z bezpečnostních důvodů je to silně nedoporučováno.
// odešlu formulář metodou POST, kde do pole s názvem jmeno vepíšu 'Tom'
echo $jmeno; // vrátí 'Tom', funguje pouze v případě povolených globálních proměnných
echo $_POST['jmeno']; // vrátí 'Tom', superglobální proměnné fungují i při vypnutých globálních proměnných
echo $_GET['jmeno']; // vypíše se chybové hlášení o neexistenci proměnné a vrátí NULL
// NULL je zvláštní hodnota libovolného typu proměnných pro stav 'nedefinováno'
[editovat] Významné projekty implementované v PHP
- Wikipedie - tato webová encyklopedie
- phpBB - balík pro provoz webového fóra
- WordPress - publikační systém pro provoz blogů a podobných aplikací
- PhpMyAdmin - oblíbená webová aplikace pro správu databázového systému MySQL
- Bugzilla - správa chyb v softwarových projektech
- Texy! - překladač intuitivní syntaxe pro formátování textu na HTML
Další viz Kategorie:Software v PHP.
[editovat] Výhody a nevýhody PHP
- Velká rozsáhlost funkcí k dispozici přímo v základní instalaci
- Nativní podpora mnoha databázových systémů
- Další nativně implementované funkční celky snadno instalovatelné z repozitáře PEAR
- Další knihovny instalovatelné z repozitáře PECL
- Zpočátku strmá křivka učení
- Funguje skoro stejně na Linuxu a na Windows; omezeně funguje i na jiných platformách.
- Časem vznikla velká celosvětová komunita vývojářů a mnoho dobrých svobodných projektů
- Velmi široká nabídka hostingu, nízké ceny díky konkurenci
- Dobrý, aktuální a úplný manuál s příklady
- Až do verze PHP 4 nepříliš povedená podpora objektově orientovaného programování s mnoha záludnostmi
- Verze 5 již podporuje OOP lépe, ale nativní knihovna funkcí nadále používá procedurální paradigma
- Nativní funkce nepoužívají objektový přístup
- Většina nativní funkcí nepodporuje výjimky (set_error_handler() je pouze slabá náplast)
- Některé rysy jazyka svádějí ke špatným stylům programování (např. přílišné užívání polí a hash-map)
- Pojmenování nativních funkcí je nekonzistentní a logika pořadí parametrů je nejednotná
- Nativně nepodporuje UNICODE (připravuje se pro verzi 6, která je ve vývoji od r. 2005)
- Dosud neexistuje formální specifikace syntaxe jazyka a jeho chování (jedinou úplnou definicí je interpreter)
- Tím pádem existuje jediný 100% kompatibilní interpreter
- Způsob, jakým PHP funguje, principiálně brání efektivnímu řešení mnoha úloh (např. objektově-relační mapování)
- PHP nemá danou oficiální závaznou politiku vývoje, místo toho nadále jen kopíruje prvky jiných technologií
- Je značně zatížené svým vlastním historickým vývojem
- Oficiálně není zaručena zpětná kompatibilita
- Programátor nemá zaručené cílové prostředí, mnoho věcí přímo ovlivňujících chování PHP lze změnit pouze mimo soubory projektu (např. v konfiguračním souboru php.ini)
- Nepodporuje paralelní výpočet (vlákna) a synchronizaci
- Nepodporuje škálování pomocí prostředí sdíleného na více serverech
- Ve standardní sadě nástrojů není nástroj pro tvorbu dokumentace
- Nemnoho kvalitních frameworků
- Nelze snadno integrovat s jinými technologiemi (znovupoužití knihoven napsaných v PHP v jiném jazyce)
- Ve standardní distribuci chybí ladící (debugovací) nástroj
- Relativně složitá syntaxe oproti jiným technologiím použitelným na stejný účel
- Po zpracování požadavku se „ztrácí“ kontext aplikace a při příštím je vytvářen jiný
- Mimo jiné z toho plyne relativně slabý výkon
- Velký počet zásadních chyb v počátcích nových verzí
- Nepodporuje jmenné prostory
- Podivné fungování referencí – asi nejzrádnější aspekt PHP
- Donedávna chybělo rozumné jednotné rozhraní pro práci s databázemi (nyní existuje PDO)
- Chybějí anotace a podpora aspektově orientovaného programování
- Chybí možnost vynutit delkaraci proměnných, takže se dá omylem zapsat něco do jiné (nové) proměnné. Taková chyba se hledá VELMI těžko.
- Nedostatečná sebereflexe – datové typy „Třída“/„Funce“, místo toho se na ně odkazuje přes stringy
- Nemožnost odkazovat se na metody objektů jinak než neohrabanou konstrukcí s Array()
- Kvůli slabé typovosti neobratné přetěžování funkcí a metod a jejich překrytí při dědění
- Neexistuje standardní způsob distribuce projektů (nejobvyklejší je distribuce ve formě zdrojových kódů)
- Neexistuje přímá podpora pro vzdálené volání procedur
- Chybí solidní knihovna / nástroj pro logování
Seznam výhod a nevýhod převzat a upraven z: ŽIŽKA, Ondřej. Výhody a nevýhody PHP [online]. 24.7.2008. Dostupné online. (česky)
[editovat] Historický vývoj PHP
Tvůrce PHP, (Rasmus Lerdorf), jej vytvořil v roce 1994 pro svou osobní potřebu přepsáním z Perlu do jazyka C. Sada skriptů byla vydána ještě v témže roce pod názvem Personal Home Page Tools, zkráceně PHP. Od té doby se technologie PHP stala jednou z nejpoužívanějších technologií pro tvorbu dynamicky generovaných WWW stránek.
V polovině roku se systém PHP spojil s programem Form Interpreter stejného autora. Tak vzniklo PHP/FI 2.0. Zeev Suraski a Andi Gutmans v roce 1997 přepsali parser a zformovali tak základ PHP3. Současně byl název změněn na dnešní podobu PHP Hypertext Preprocessor. PHP verze 3 vyšla v roce 1998; byla rychlejší, obsahovala více funkcí. Také běžela i pod operačním systémem Windows.
V roce 2000 vyšla PHP verze 4.
V roce 2004 byla vydána verze 5 s vylepšenou podporou objektově orientovaného programování, která se inspirovala podle jazyka Java.
[editovat] Data vydání hlavních verzí
[editovat] Externí odkazy
- ↑ Živě.cz: Problémy starých skriptů v novém PHP
|