继往开来 凝心聚力 努力提高我校机关党建工作科学...
PHP | |
![]() | |
Druh | multiplatformny |
---|---|
Dátum vzniku | 8.6.1995 |
Pou?itie | webové stránky a aplikácie |
Typová kontrola | slabá, dynamická |
Tvorca | Rasmus Lerdorf, The PHP Development Team |
Pou?ívané prípony | .php .phtml .php4 .php3 .php5 .phps .phar |
PHP (PHP: Hypertext Preprocessor) je populárny open source programovací jazyk, ktory sa pou?íva najm? na programovanie klient-server aplikácií (na strane servera) a pre vyvoj dynamickych webovych stránok.
Medzi známe aplikácie zalo?ené na PHP patrí napríklad phpBB a MediaWiki, software, na ktorom be?í Wikipédia. PHP je alternatívou k:
- systému Microsoft ASP/VBScript/JScript
- systému Macromedia ColdFusion
- systému Sun Microsystems JSP/Java
- systému CGI/Perl
V?eobecny preh?ad
[upravi? | upravi? zdroj]PHP bolo in?pirované jazykmi podporujúcimi procedurálne programovanie. Najviac vlastností prebralo od jazyka C a jazyka Perl. V neskor?ích verziách bolo roz?írené o mo?nos? pou?íva? objekty.
Jedna zo zaujímavych vlastností PHP je, ?e umo?ňuje ove?a viac ako be?ny skriptovací jazyk. V?aka modulárnemu návrhu mo?no PHP pou?íva? aj na vyvoj aplikácii s u?ívate?skym rozhraním (GUI).
PHP doká?e spolupracova? s rela?nymi databázami, ako napríklad MySQL, Oracle, IBM DB2, Microsoft SQL Server, PostgreSQL alebo SQLite, pri?om si stále zachováva jednoduchú a priamo?iaru syntax. PHP be?í na takmer v?etkych najroz?írenej?ích opera?nych systémoch, vrátane UNIXu, Linuxu, Windows ?i Mac OS X. Spolupracuje s najroz?írenej?ími webovymi servermi.
Architektúra Linux-Apache-MySQL-PHP (zau?ívaná skratka LAMP) a takisto Windows-Apache-MySQL-PHP (WAMP) sa stali ve?mi ob?úbenymi v internetovom odvetví.
História
[upravi? | upravi? zdroj]PHP bolo p?vodne navrhnuté ako nieko?ko skriptov v jazyku Perl, nesk?r prepísanych do jazyka C. Autorom bol Rasmus Lerdorf v roku 1994. O rok nesk?r svoje skripty zverejnil pod názvom "Personal Home Page Tools". Kombináciou s ?al?ím jeho programom Form Interpreter vzniklo PHP/FI. Zeev Suraski a Andi Gutmans, dvaja izraelskí vyvojári prepísali syntakticky analyzátor (parser) v roku 1997 na nov?iu verziu, ktorá sa stala základom PHP 3. Krátko po zverejnení verzie PHP 3 bola spustená aj oficiálna stránka. V roku 1999 sa Suraski a Gutmans op?? pustili do prepísania jadra, u? pod názvom Zend engine. Zalo?ili spolo?nos? Zend Technologies, ktorá sa odvtedy podie?a na ?al?om vyvoji PHP. V máji 2000 bolo vydané PHP 4, ktorého jadro tvoril novy Zend Engine 1.0. 13. júla 2004 bola vydaná verzia PHP 5, s jadrom ?Zend Engine II“, obsahujúca nové rysy ako napr. vylep?ená podpora objektovo orientovaného programovania, PHP Data Objects extension a ?al?ie.
Pou?itie
[upravi? | upravi? zdroj]PHP je skriptovací jazyk[1], ktory je ?peciálne navrhnuty na tvorbu web stránok be?iacich na webovom serveri. V?etok PHP kód je vykonávany pomocou PHP runtime, aby dynamicky vytvoril obsah na webovej stránke.[2] Taktie? m??e by? vyu?ity na skriptovanie z príkazového riadku alebo klientovo orientované aplikácie s grafickym rozhraním. PHP m??e by? nasadené na v???ine Webovych serverov, opera?nych systémov a platformách a m??e sa pou?íva? v spojení s mnohymi rela?nymi databázami. Mnoho webhostingov ponúka podporu PHP pre svojich klientov. PHP je zadarmo dostupné a PHP Group poskytuje úplny zdrojovy kód pre pou?ívate?ov, aby ho mohli dotvára?, meni? a roz?irova? pre ich vlastné pou?itie.[3] PHP sa primárne správa ako filter[4], ktory má na vstupe súbor, alebo prúd dát obsahujúci text a/alebo PHP in?trukcie a na vystupe prúd dát naj?astej?ie vo forme HTML. Od PHP verzie 4 PHP parser kompiluje vstup aby vyprodukoval bajt kód pre spracovanie pomocou Zend Engine, ktory poskytuje zvy?eny vykon v porovnaní s jeho interpretermi v minulosti.[5] Aj ke? PHP bolo p?vodne vytvorené na tvorbu dynamickych webovych stránok, v sú?asnosti sa primárne zameriava na skriptovanie na strane servera[6] a je podobné ostatnym serverovo orientovanym skriptovacím jazykom, ktoré klientovi poskytujú dynamicky obsah z webového servera. Medzi tieto jazyky patrí napríklad ASP .NET od spolo?nosti Microsoft, JavaServer Pages[7] od Sun Microsystems alebo mod_perl. PHP pritiahlo produkciu mnohych frameworkov, ktoré poskytujú stavebné bloky a návrh ?truktúry pre podporu rychleho vyvoja aplikácií. Niektoré ako CakePHP, Symfony, CodeIgniter, Yii Framework a Zend Framework ponúkajú vlastnosti podobné inym frameworkom pre webové aplikácie. LAMP architektúra sa stala populárnou vo webovom priemysle ako sp?sob vyvoja webovych aplikácií. Písmeno ?P“ v tomto balíku be?ne zastáva PHP po boku s Linux, Apache a MySQL, av?ak m??e odkazova? aj na Python, Perl, alebo kombináciu v?etkych troch. Podobné balíky sú taktie? dostupné pre Windows a OS X, pri?om ich názvy sú WAMP a MAMP, kde prvé písmená reprezentujú opera?ny systém. Hoci PHP a Apache sú sú?as?ou Mac OS X základnej in?talácie, pou?ívatelia tychto balíkov vyh?adávajú jednoduch?iu in?taláciu, ktorá je jednoduch?ie aktualizovaná. Od apríla 2007 viac ako 20 miliónov internetovych domén malo webovy servis hostovany na serveroch s in?talovanym PHP a mod_php bolo zaznamenané ako najpopulárnej?í Apache HTTP Serverovy modul.[8] PHP je pou?ívané ako serverovo orientovany programovací jazyk na 75 % zo v?etkych web stránok, ktorych serverovo orientovany programovací jazyk je známy[9], a PHP je najpou?ívanej?í open source softvér v spolo?nostiach.[9] Mno?ina systémov na správu webového obsahu napísané v PHP zah?ňa MediaWiki, Joomla, eZ Publish, SilverStripe, WordPress, Drupal a Moodle. V?etky webové stránky vytvorené pomocou tychto nástrojov sú napísané v PHP, zah?ňajúc po?ívate?skú ?as? Wikipédie, Facebook a Digg.
Bezpe?nos?
[upravi? | upravi? zdroj]Okolo 30 % v?etkych zranite?ností zaznamenanych v National Vulnerability Database sú spojené s PHP.[10] Tieto zranite?nosti sú sp?sobené nedodr?aním pravidiel praktického programovania. Technické chyby samotného jazyka alebo jeho základnych kni?níc nie sú také ?asté (okolo 1 % zo v?etkych chyb v roku 2008).[11][12] Ke??e programátori robia chyby, niektoré jazyky obsahujú kontrolu chyb na automatické zis?ovanie nedostato?nej validácie vstupu, ktorá vedie k mnohym problémom. Takáto funkcia je vyvíjaná aj pre PHP,[13] ale jej zahrnutie a vydanie bolo v minulosti nieko?kokrát zamietnuté.[14][15] Existujú v?ak pokro?ilé ochranné záplaty ako napríklad Suhosin a Hardening-Patch, ktoré sú ?peciálne navrhnuté pre prostredia webhostingu.[16] PHPIDS pridáva bezpe?nos? ?ubovo?nej PHP aplikácii pre ochranu proti intruze. PHPIDS deteguje útoky zalo?ené na cross-site scripting (XSS), SQL injection, header injection, directory traversal, spú??anie vzdialenych súborov, remote file inclusion, a denial-of-service (DoS).
Optimalizácia rychlosti
[upravi? | upravi? zdroj]Zdrojovy kód PHP je skompilovany za behu na vnútorny formát, ktory m??e by? vykonany prostredníctvom PHP engine.[17][18] Aby sa urychlil ?as vykonávania a nemusel sa kompilova? zdrojovy kód v?dy ke? sa pristupuje k web stránke, m??u by? PHP skripty taktie? nasadené v spustite?nom formáte pou?itím PHP kompilera. Optimalizátory kódu sú zamerané na vylep?enie vykonu skompilovaného kódu redukovaním jeho ve?kosti, odstránením nadbyto?nych in?trukcií a vykonávaním inych zmien, ktoré m??u zní?i? vykonávací ?as. Pri PHP sú ?asto príle?itosti na optimalizáciu kódu.[19] Príkladom optimalizátora kódu je PHP roz?írenie eAccelerator. ?al?ím prístupom k redukovaniu kompila?ného za?a?enia pre PHP servery je pou?itie opcode cache. Opcode cache funguje na základe odchytávania skompilovanej formy PHP skriptu v zdie?anej pam?ti aby predchádzala nadmernému parsovaniu a kompilovaniu kódu pri ka?dom spustení skriptu. Aby sa zaru?ila najv???ia efektivita opcode caching a optimalizácia kódu m??u by? skombinované, ke??e modifikácie sú vzájomne nezávislé (sú vykonávané v rozdielnych ?astiach kompilácie).
Zdroje
[upravi? | upravi? zdroj]PHP obsahuje free a open source kni?nice s jadrom. PHP je v podstate systém uvedomujúci si internet so zabudovanymi modulmi pre pristupovanie k serverom s protokolmi pre prenos dát (FTP), mnohymi databázovymi servermi, zabudovanymi SQL kni?nicami ako napríklad PostgreSQL, MySQL, Microsoft SQL Server a SQLite, LDAP servery, a iné. Mnohé funkcie príbuzné programátorom v jazyku C, ako napríklad stdio rodina, sú prístupné aj v jadre PHP.[20] PHP sprístupňuje vyvojárom písa? doplnky v C pre pridanie funkcionality do jazyka. Tieto doplnky m??u by? skompilované do PHP alebo na?ítané dynamicky po?as behu. Existujú doplnky pre podporu Windows API, mana?ment procesov na opera?nych systémoch zalo?enych na Unix-e, viacbytové re?azce (Unicode), cURL a nieko?ko populárnych komprimovacích formátov. Iné funkcie obsahujúce integráciu s IRC, dynamické generovanie obrázkov a AdobeFlash obsahu a dokonca syntézu re?i. Základné funkcie jazyka ako tie zaoberajúce sa re?azcami a po?ami sú taktie? implementované ako doplnok.[21] PHP komunitná doplnková kni?nica (PHP Extension Community Library PECL) je súhrn doplnkov pre PHP. [22] Zend poskytuje certifika?nú skú?ku pre programátorov, v?aka ktorej sa m??u sta? certifikovanymi PHP vyvojármi.
Syntax
[upravi? | upravi? zdroj]PHP spracuje len kód ohrani?eny ?peciálnymi tagmi, ostatny text bez zmeny odovzdá na vystup. Najv?eobecnej?ie takto pou?ívané tagy sú <?php
a ?>
. Pou?i? sa v?ak dá aj <script language="php">
a </script>
, takisto skrátená forma <?
, alebo <?=
(na vypis re?azca, alebo premennej) a ?>
, prípadne ASP-style tagy <%
, <%=
a %>
. V prípade, ?e skript obsahuje skrátené formy, stáva sa menej prenosnym, preto?e ich rozoznávanie je mo?né v PHP konfigurácií zakáza?. Zmyslom tychto tagov je oddeli? kód priamo spracúvany PHP od zvy?ného kódu.
Názvy premennych za?ínajú symbolom $
a samotné premenné nemusia ma? dopredu definovany typ. Na rozdiel od názvov funkcií a tried, v názvoch premennych sa rozli?ujú ve?ké a malé písmená. PHP interpretuje medzeru, tabulátor a novy riadok ako biele znaky, teda kdeko?vek v kóde nezále?í na ich po?te, ani poradí (samozrejme vynimkou je vnútro textového re?azca).
V PHP existujú 3 druhy komentárov:
/* ... */
na ozna?enie blokového komentáru.// ...
na ozna?enie jednoriadkového komentáru.# ...
na ozna?enie jednoriadkového komentáru.
Syntaxou a k?ú?ovymi slovami pripomína PHP jazyk C a jazyky z neho odvodené. Podmieneny príkaz if
, cykly for
a while
a návratové hodnoty funkcií sú syntakticky ve?mi blízke jazykom ako C, C++, Java, alebo Perl.
Dátové typy
[upravi? | upravi? zdroj]PHP ukladá celé ?ísla v rozsahu závislom od platformy (64 alebo 32 bitov) ako celé ?íslo so znamienkom ekvivalentne k typu long v jazyku C. Celé ?ísla bez znamienka sú v istych situáciách konvertované na hodnoty so znamienkom, ?ím sa odli?uje od inych programovacích jazykov.[23] Premenné typu celé ?ísla m??u ma? ur?ené pou?ívanie desiatkovej, osmi?kovej a ?estnástkovej notácie. Desatinné ?ísla sú taktie? zoradené pod?a rozsahu závislého od platformy. M??u pou?íva? notáciu desatinnych ?ísel, alebo dve formy vedeckej notácie.[24] PHP má prirodzeny booleovsky typ, ktory je podobny prirodzenému booleovskému typu v Jave a C++. Pri pou?ití booleovskej konverzie pravidiel sú nenulové hodnoty interpretované ako pravda a nula je interpretovaná ako nepravda tak ako aj v Perl-e a C++. Prázdny (null) dátovy typ je reprezentovany ako premenná, ktorá nemá hodnotu. Jej jediná hodnota, ktorú m??e nadobudnú? je NULL. Premenné typu ?resource“ reprezentujú odkazy na prostriedky z externych zdrojov. Tieto sa zvy?ajne vytvárajú funkciami z konkrétneho doplnku a m??u by? spracované iba funkciami z rovnakého doplnku. Príkladom m??u by? súbory, obrázky a databázové zdroje. Polia m??u obsahova? elementy hocakého typu, ktory PHP doká?e spracova?, vrátane zdrojov, objektov a taktie? aj ?al?ích polí. Poradie je zachované v listoch hodn?t a v hashoch s hodnotami a k?ú?mi, pri?om sa m??u navzájom prelína?. PHP taktie? podporuje re?azce, ktoré m??u by? pou?ité s jednoduchymi úvodzovkami, dvojitymi úvodzovkami, nowdoc alebo heredoc syntaxou.[25] ?tandardná PHP kni?nica sa pokú?a rie?i? be?né problémy a implementuje efektívne rozhrania pre dátové prístupy a triedy.[26]
Objekty
[upravi? | upravi? zdroj]Základná funkcionalita objektovo orientovaného programovania bola pridaná v PHP 3 a vylep?ená v PHP 4. Zaobchádzanie s objektmi bolo kompletne prepísané v PHP 5, ke? bolo zároveň roz?írené o nové funkcie a vylep?ené z h?adiska vykonnosti. V predo?lych verziách PHP bolo k objektom pristupované ako k hodnotovym typom.[27] Nedostatkom tejto metódy bolo to, ?e cely objekt bol skopírovany, ke? bola hodnota priradená, alebo posunutá ako parameter nejakej metóde. V novom prístupe sú objekty odkazované pod?a rukov?te a nie pod?a hodnoty. PHP 5 predstavilo súkromné a chránené premenné a metódy objektu, spolu s abstraktnymi triedami, kone?nymi triedami, abstraktnymi metódami a kone?nymi metódami. Taktie? predstavilo ?tandardny sp?sob deklarovania kon?truktorov a de?truktorov podobnych ako v inych objektovo orientovanych jazykoch ako napríklad C++ a aj ?tandardny model spracovávania chyby. Okrem toho PHP 5 pridalo rozhrania a povolilo implementáciu viacerych rozhraní. Existujú ?peciálne rozhrania, ktoré objektom dovo?ujú interakciu so systémom runtime. Objekty implementujúce prístup k po?u m??u by? pou?ité so syntaxou po?a a objekty implementujúce iteráciu alebo agregáciu iterácie m??u by? pou?ité s kon?trukciou foreach. Neexistuje ?iadna funkcia virtuálnych tabuliek v jadre, tak?e statické premenné sú po?as kompilácie sp?té s menom namiesto s referenciou.[28] Ak vyvojár vytvorí kópiu objektu pomocou rezervovaného slova clone, Zend engine skontroluje, ?i bola definovaná metóda __clone() alebo nie. Ak nie je tak sa zavolá predvolená metóda __clone(), ktorá skopíruje vlastnosti objektu. Ak je metóda __clone() definovaná, tak ona bude zodpovedná za nastavenie potrebnych vlastností vo vytvorenom objekte. Pre pohodlie, jadro zaobstaráva funkciu, ktorá importuje vlastnosti zdrojového objektu, tak?e programátor m??e za?a? s úplnou kópiou zdrojového objektu a iba nahradí vlastnosti, ktoré potrebuje zmeni?.[29]
Uká?ky kódu
[upravi? | upravi? zdroj]Prvy príklad zobrazí text ?Ahoj svet!“:
<?php
echo "Ahoj svet!\n";
?>
Druhy príklad vypo?íta preponu pomocou Pytagorovej vety:
<?php
$strana_a = 3; // strana a - premenná
$strana_b = 4; // strana b - premenná
$strana_c = hypot($strana_a,$strana_b); // vypo?et strany c
echo $strana_c; // vypis d??ky strany c do tela stránky
?>
Tretí príklad ukazuje kombináciu PHP s HTML:
<p>Práve sa pí?e rok <strong><?php echo Date("Y"); ?></strong>.</p>
alebo
<?php echo "<p align=\"center\">Príklad 3. bol pridany v roku 2006.</p>"; ?>
nov?ie sa pou?íva verzia echo s ''; ktorá dovo?uje tagy bez zbyto?nych \ znakov, napríklad
<?php echo '<p align="center">Príklad 3. bol pridany v roku 2006.</p>'; ?>
Referencie
[upravi? | upravi? zdroj]- ↑ Laravel vs PHP: Dissecting The Backend Frameworks in Detail! | Simform [online]. 2025-08-06, [cit. 2025-08-06]. Dostupné online. (po anglicky)
- ↑ PHP Manual Image Processing and GD; [online]. php.net, [cit. 2025-08-06]. Dostupné online.
- ↑ Embedding PHP in HTML [online]. O'Reilly, 2025-08-06, [cit. 2025-08-06]. Dostupné online. Archivované 2025-08-06 z originálu.
- ↑ Archivovaná kópia [online]. [Cit. 2025-08-06]. Dostupné online. Archivované 2025-08-06 z originálu.
- ↑ PHP and MySQL [online]. University of Alabama, [cit. 2025-08-06]. Dostupné online. Archivované 2025-08-06 z originálu.
- ↑ PHP Server-Side Scripting Language [online]. Indiana University, 2025-08-06, [cit. 2025-08-06]. Dostupné online. Archivované 2025-08-06 z originálu.
- ↑ JavaServer Pages Technology — JavaServer Pages Comparing Methods for Server-Side Dynamic Content White Paper [online]. Sun Microsystems, [cit. 2025-08-06]. Dostupné online.
- ↑ PHP: PHP Usage Stats [online]. SecuritySpace, 2025-08-06, [cit. 2025-08-06]. Dostupné online.
- ↑ a b Usage of server-side programming languages for websites [online]. W3Techs, 2025-08-06, [cit. 2025-08-06]. Dostupné online.
- ↑ PHP-related vulnerabilities on the National Vulnerability Database [online]. [Cit. 2025-08-06]. Dostupné online. Archivované 2025-08-06 z originálu.
- ↑ Security and... Driving? (and Hiring) [online]. Sean Coates, [cit. 2025-08-06]. Dostupné online.
- ↑ Computerworlduk.com, Interview: Ivo Jansch, February 26, 2008
- ↑ PHP Taint Mode RFC [online]. . Dostupné online.
- ↑ Developer Meeting Notes, Nov. 2005 [online]. . Dostupné online.
- ↑ Taint mode decision, November 2007 [online]. [Cit. 2025-08-06]. Dostupné online. Archivované 2025-08-06 z originálu.
- ↑ Hardened-PHP Project [online]. 2025-08-06. Dostupné online.
- ↑ How do computer languages work? [online]. [Cit. 2025-08-06]. Dostupné online. Archivované 2025-08-06 z originálu.
- ↑ (Gilmore 2006)
- ↑ PHP Accelerator 1.2 (page 3, Code Optimisation) [online]. Nick Lindridge, [cit. 2025-08-06]. Dostupné online. Archivované 2025-08-06 z originálu.
- ↑ PHP Function List [online]. The PHP Group, [cit. 2025-08-06]. Dostupné online.
- ↑ Cross Reference: /PHP_5_4/ext/standard/
- ↑ Developing Custom PHP Extensions [online]. devnewz, 2025-08-06, [cit. 2025-08-06]. Dostupné online. Archivované 2025-08-06 z originálu.
- ↑ Integers in PHP, running with scissors, and portability [online]. MySQL Performance Blog, March 27, 2007, [cit. 2025-08-06]. Dostupné online.
- ↑ Types [online]. The PHP Group, [cit. 2025-08-06]. Dostupné online.
- ↑ Strings [online]. The PHP Group, [cit. 2025-08-06]. Dostupné online.
- ↑ SPL — StandardPHPLibrary [online]. PHP.net, March 16, 2009, [cit. 2025-08-06]. Dostupné online.
- ↑ PHP 5 Object References [online]. mjtsai, [cit. 2025-08-06]. Dostupné online.
- ↑ Classes and Objects (PHP 5) [online]. The PHP Group, [cit. 2025-08-06]. Dostupné online.
- ↑ Object cloning [online]. The PHP Group, [cit. 2025-08-06]. Dostupné online.
Externé odkazy
[upravi? | upravi? zdroj]- Oficiálna stránka projektu (po anglicky).
- Oficiálna dokumentácia PHP (po anglicky).
- Linux User Commands Manual (po anglicky) –
- Péhápko.cz Archivované 2025-08-06 na Wayback Machine — aktuálna u?ebnica PHP (po ?esky).