PHP

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 2. října 2022; kontroly vyžadují 7 úprav .
PHP
Jazyková třída multiparadigma , objektově orientovaný , imperativ
Objevil se v 8. června 1995 [5] [6]
Autor Rasmus Lerdorf [3]
Vývojář Rasmus Lerdorf [1] , Andy Gutmans [1] , PHP Group [d] , Zend Technologies [2] a Zeev Sourasky
Přípona souboru .php[7]
Uvolnění
Byl ovlivněn C++ , Perl [8] , C [8] , Java [8] , Tcl [9] , HTML a JavaScript
Licence Licence PHP [10]
webová stránka php.net
OS Operační systém podobný Unixu a Microsoft Windows
 Mediální soubory na Wikimedia Commons

PHP ( /pi:.eɪtʃ.pi:/ anglicky  PHP: Hypertext Preprocessor  - "PHP: hypertext preprocessor "; původně PHP / FI (Personal Home Page / Form Interpreter), později nazvaný Personal Home Page Tools [11]  - " Tools pro tvorbu osobních webových stránek") je univerzální skriptovací jazyk podobný C [12] , který se intenzivně používá pro vývoj webových aplikací. V současnosti jej podporuje velká většina poskytovatelů hostingu a je jedním z předních jazyků používaných k vytváření dynamických webových stránek [13] .

Jazyk a jeho interpret ( Zend Engine ) vyvíjí skupina nadšenců v rámci open source projektu [14] . Projekt je distribuován pod vlastní licencí , která není kompatibilní s GNU GPL .

Rozsah

V oblasti webového programování, zejména na straně serveru, je PHP jedním z populárních skriptovacích jazyků (společně s JSP , Perl a jazyky používanými v ASP.NET ).

Popularita v oblasti tvorby webových stránek je dána přítomností velké sady vestavěných nástrojů a doplňkových modulů pro vývoj webových aplikací [15] . Hlavní jsou:

Používané stovkami tisíc vývojářů od roku 2010; Podle žebříčku TIOBE na základě údajů z vyhledávačů bylo v květnu 2016 PHP na 6. místě mezi programovacími jazyky [13] .

Zahrnuje LAMP  - běžnou sadu softwaru pro tvorbu a hostování webových stránek ( Linux , Apache , MySQL , PHP), stejně jako LEMP - stejně běžnou sadu softwaru ( Linux , Nginx , MySql , PHP).

Mezi stránky využívající PHP patří Facebook , Wikipedia , Yahoo! , Baidu .

Další funkce

Jazyk automaticky podporuje HTTP Cookies v souladu se standardy Netscape. To vám umožní nastavit a číst malé segmenty dat na straně klienta. Práce s cookies je organizována prostřednictvím relací (sessions). Relace mají datum expirace (po jeho vypršení se data smažou), v relacích lze ukládat a upravovat různé typy dat, včetně serializovaných - procházející serializací (proces probíhá automaticky), objekty PHP.

Vytváření GUI aplikací

PHP není zaměřeno na tvorbu desktopových aplikací, ale je potřeba vytvořit rozhraní pro nastavení serverů, průběžné spouštění, ladění skriptů (skriptů), správu lokálních a testovacích serverů atd. Z toho důvodu vznikla řešení tohoto problému.

Rozšíření

Hlavním využitím rozšíření je přidání knihoven uživatelského rozhraní (UI libraries).

Rozšíření se obvykle dělí do tří skupin:

  • Rozšíření PHP: WxPHP ( Windows , Linux , macOS ), Winbinder ( Windows );
  • wrappery, které používají systémové funkce pomocí nástrojů FFI: Win32Std, Tk;
  • wrappery pro použití rozhraní příkazového řádku: PHP-UI, PHP-XCB.

Rozšíření, jako je obousměrný wrapper, byla vyvinuta pro použití jiných jazyků při psaní rozšíření PHP a naopak. Například PSV Component Library je projekt sestávající ze tří dílčích projektů:

  • PHP4Delphi implementuje připojení PHP k programům napsaným v Delphi pomocí WinAPI ; vyvíjen od roku 1999, ale neaktualizován od roku 2009, kvůli čemuž se objevily pobočky;
  • PHP extensions development framework - nástroj pro tvorbu PHP rozšíření, komponenty VCL jsou nedílnou součástí PHP4Delphi, jejichž základní komponenty jsou potřebné pro tvorbu aplikací;
  • php4Applications je rozšíření pro použití PHP v jiných jazycích, založené na PHP4Delphi, které umožňuje přístup k makrům a zjednodušuje používání PHP tím, že eliminuje potřebu vytvářet obal.
Vývojová prostředí (IDE)

Je zde také místo pro plnohodnotná vývojová prostředí pro GUI PHP:

  • DevPHP

Průkopníkem v této kategorii je studio DevPHP-IDE, které použilo Kylix ( Delphi ) jako páteř rozhraní a phpcli pro tvorbu vlastních programů.

Zahrnoval editor kódu, několik nástrojů a vizuální prohlížeč HTML.

Poprvé byl představen v roce 2002, nyní má 3 stabilní verze, ale vývoj nepokračuje - zastavil se kvůli smrti hlavního vývojáře při autonehodě.

  • CodeGear Rad Studio (rozšíření)

Po DevPHP IDE se objevilo rozšíření - sada komponent pro CodeGear Rad Studio 2009 založená na php4delphi s některými vylepšeními (webové prvky, inspektor, debugger), jeho podpora trvala čtyři verze, z nichž druhá byla zahrnuta v placeném rozšíření Rad Studio 2010 : naskytla se příležitost používat skripty, stylové webové komponenty, prohlížet styly a webové stránky před vytvořením programu, spustit lokální server, sestavit program jako samostatnou aplikaci a ladit kód. S vydáním Delphi XE bylo rozšíření pojmenováno RADPHP Xe. Dále se samotné studio stalo známé jako Embarcadero Delphi a práce na tomto rozšíření byly pozastaveny na neurčito.

  • DevelStudio (RAD)

V roce 2009 začal na bázi php4delphi vývoj prostředí pro tvorbu grafických PHP aplikací, ke kterému se později přidal Rostislav Romanov. Prostředí se jmenovalo PHP DevelStudio, první publikovaná verze byla 0.1.7. DevelStudio mělo v toolboxu malý počet komponent a běželo na zastaralém PHP 4. Ve druhé verzi dostalo DevelStudio podporu pro PHP 5. Byly přidány streamy a bylo provedeno mnoho změn a vylepšení. Sestavovací kód programů byl uzavřen, předchozí verze programu a zprávy na fóru byly odstraněny, aby se zabránilo vetřelcům.

I druhá verze DevelStudio dostala sadu komponent AlphaControls, v důsledku čehož byla pro svou jednoduchost a přehlednost použita k tvorbě malwaru . Antiviry populární v té době (MacAffee, AVG , Avira ) začaly rozpoznávat jakékoli programy kompilované v DevelStudiu jako viry.

Po nějaké době autor AlphaControls podal stížnost vývojářům DevelStudia a sada komponent byla z prostředí zcela odstraněna, nicméně byla zachována v již existující verzi, kterou se tentokrát nepodařilo z fóra odstranit .

V roce 2012 byla vydána nejnovější verze prostředí - 3.0.2, kde se objevila nová sada komponent, včetně prohlížeče Chromium místo IE , což přitáhlo pozornost webových vývojářů a uživatelů prostředí Algorithm. V té době bylo kompilace programů v Algorithmu placená, takže DevelStudio jako nové a bezplatné vývojové prostředí nalákalo většinu publika na sebe.

V roce 2014 začaly první pokusy o obnovu prostředí, tentokrát ze strany komunity . Na konci roku 2018 byl zdrojový kód obnoven a je dostupný na GitHubu .

V roce 2019 komunita oslovila tvůrce DevelStudia, aby změnil distribuční politiku prostředí a zpřístupnil jej pro aktualizaci a úpravy. Kvůli stížnostem na chybějící odkazy na použité knihovny (DCEF, PHP4Delphi, TSizeCtrl, SynEdit) bylo fórum odstraněno a jedna ze stránek popisujících prostředí byla přesměrována na hlavní stránku webu. Od této chvíle je DevelStudio oficiálně vlastněno komunitou.

  • DevelNext (DN)

Paralelně s tím začal hlavní vývojář DevelStudio vytvářet „reinkarnaci“ předchozího prostředí. Jako základ vzal grafickou knihovnu JavaFX , výsledkem bylo zcela nové prostředí s podporou CSS , ale bez plné podpory knihovny Zend PHP  - projekt byl založen na vlastním jazyce jPHP. Jeho funkcemi jsou práce na JVM , JIT kompilátor, podpora Unicode , multithreading a objektově orientovaná standardní knihovna.

V 16. verzi dostalo prostředí DevelNext podporu pro php 7 a souběžně s tím bylo jPHP rozšířeno o nadšence pro vývoj pod OS Android .

V tuto chvíli autor a nadšenci pracují na verzi 2020 (dříve 17.).

  • PHPQt

V roce 2015 začal Alexander Kazantsev studovat algoritmy vývoje rozhraní a vytvořil rozšíření php_qml, které umožňovalo používat widgety z knihovny QT, ale fungovalo to pouze pod Windows.

Tím začal vývoj PHPQt, první verze nevěnovaly velkou pozornost webovým vývojářům, takže autor začal rozšíření do hloubky vylepšovat.

28. července 2015 byla zveřejněna první verze kompilátoru projektu, v té době to byl jednoduchý exekutor skriptu (script), který připojoval php kód k útržku (jako DevelStudio) a měl závislost na Windows API, na adrese v této fázi byly podporovány téměř všechny widgety a multithreading, došlo ke snadné optimalizaci php kódu. Od té chvíle se motor jmenoval PQEngine,

3. srpna 2016 byla vydána pátá verze kompilátoru aplikace (PqBuilder), který přešel na základ PlastiQ a měl podporu pro nejnovější, v té době, php 7, projekty dostaly kompletnější kompilátor a již nevyžadovaly přítomnost PqEngine.dll v blízkosti spustitelného souboru, místo toho se tyto vizuální knihovny začaly přidávat dynamicky - jako soubory a ne všívat do PQEngine.dll. Tento krok byl učiněn kvůli kompatibilitě s jinými systémy a původními knihovnami Qt.

S příchodem šesté verze se projekt stal doplňkem prostředí Qt Studio a z kompilátoru se stal jen optimalizátor kódu před finálním sestavením programu. Objevil se plnohodnotný editor rozhraní, nápovědy v editoru kódu a začala se vytvářet dokumentace. Od té chvíle vydali oznámení o vytvoření prostředí PqStudio, ale jeho vývoj nešel daleko.

  • WinForms PHP

V roce 2018 se objevil projekt, který kombinuje možnosti Windows Forms (.NET Framework) a PHP 7. Jeho vývoj stále probíhá pomalým tempem.[ kdy? ] . Momentálně je v motoru k dispozici téměř vše[ co? ] funkce pro OOP. Prostředí je v soukromém vývoji. Výchozí spustitelný soubor je dodáván s php7ts.dll.

Připojení PHP k projektu

Existují i ​​rozšíření pro opačné použití - připojení PHP k projektu v jiném programovacím jazyce: Phalanger (C#, php od 5.4 do 7), Peachpie] (C#, php 7), PHP4Delphi (Lazarus, Delphi, C#, C, C++ , php 5.6, JPHP (Java, php 7.0), PHPly (Python, php 5.6)

Historie

V roce 1994 dánský programátor Rasmus Lerdorf vyvinul v jazyce C [16] sadu CGI skriptů , které měly sloužit pro návštěvníky jeho online životopisu , který zpracovává šablony HTML dokumentů. Lerdorf nazval sadu Nástroje osobní domovské stránky (Nástroje pro osobní domovskou stránku ). Brzy funkce přestaly stačit a Lerdorf vyvinul nový interpret šablon PHP/FI ( anglicky  Personal Home Page / Forms Interpreter  - „osobní domovská stránka / interpret formulářů“) [17] .

8. června 1995 byla vydána Personal Home Page (PHP Tools) verze 1.0 - první veřejné vydání.

V roce 1997, po dlouhém beta testování , byla vydána druhá verze handleru napsané v C  - PHP / FI 2.0. Používalo ho asi 1 % (cca 50 tisíc) všech internetových domén na světě [11] .

PHP 3.0 prošlo významným přepracováním, které definuje moderní vzhled a styl programovacího jazyka. V roce 1997 dva izraelští programátoři, Andy Gutmans a Zeev Suraski , kompletně přepsali kód tlumočníka. PHP 3.0 bylo oficiálně vydáno v červnu 1998 [11] .

Jednou ze silných stránek PHP 3.0 byla možnost rozšířit jádro o další moduly. Následně rozhraní pro psaní rozšíření přilákalo mnoho vývojářů třetích stran k PHP pracujícím na jejich modulech, což umožnilo PHP pracovat s velkým množstvím databází , protokolů a podporovat velké množství API . Velké množství vývojářů vedlo k rychlému rozvoji jazyka a rychlému růstu jeho popularity. Od této verze zkratka php znamená „PHP: hypertext Preprocessor“ namísto zastaralé „Personal Home Page“.

V zimě roku 1998, téměř okamžitě po oficiálním vydání PHP 3.0, začali Andy Gutmans a Zeev Suraski předělávat jádro PHP. Mezi cíle patřilo zvýšení výkonu komplexních aplikací a zlepšení modularity základny PHP kódu. Nový motor nazvaný Zend Engine se s úkoly úspěšně vypořádal a byl poprvé představen v polovině roku 1999 . PHP 4.0 , založené na tomto enginu a přinášející s sebou sadu dalších funkcí, bylo oficiálně vydáno v květnu 2000 . Kromě vylepšení výkonu mělo PHP 4.0 několik dalších klíčových inovací, jako je podpora relací, ukládání do vyrovnávací paměti výstupu , bezpečnější způsoby zpracování uživatelského vstupu a několik nových jazykových konstrukcí.

Pátá verze PHP byla vydána vývojáři 13. července 2004 . Změny zahrnují aktualizaci jádra Zend ( Zend Engine 2 ), která výrazně zvýšila efektivitu interpretru . Zavedena podpora pro značkovací jazyk XML . Funkce OOP byly zcela přepracovány a jsou velmi podobné modelu používanému v Javě . Konkrétně byl představen destruktor , veřejné, soukromé a chráněné členy a metody , konečné členy a metody, rozhraní a klonování objektů. Následující verze také zavedly jmenné prostory , uzávěry a řadu poměrně závažných změn, kvantitativně a kvalitativně srovnatelných s těmi, které se objevily během přechodu na PHP 5.0.

Šestá verze PHP se vyvíjí od října 2006 [18] . Bylo provedeno mnoho inovací [19] [20] , jako je odstranění regulárních výrazů POSIX a „dlouhých“ superglobálů z jádra a odstranění direktiv safe_mode , magic_quotes_gpc a register_globals z konfiguračního souboru php.ini. Jednou z hlavních novinek měla být podpora Unicode [21] . Nicméně v březnu 2010 byl vývoj PHP6 považován za neperspektivní [22] kvůli potížím s podporou Unicode. Zdrojový kód PHP6 byl přesunut do , a verze 5.4 se stala hlavní linií vývoje.

PHP 7

V roce 2014 proběhlo hlasování, jehož výsledkem byla další verze nazvaná PHP 7 [23] . Vydání nové verze bylo plánováno na polovinu října 2015 [24] . V březnu 2015 vydal Zend infografiku , která nastiňuje hlavní inovace v PHP 7 [25] .

3. prosince 2015 byla oznámena verze PHP 7.0.0 [26] .

Nová verze je založena na experimentální větvi PHP, která se původně jmenovala phpng ( PHP Next Generation „next generation“) a byla vyvinuta se zaměřením na zvýšení výkonu a snížení spotřeby paměti [27] . Nová verze přidává možnost specifikovat typ dat vrácených z funkce [28] , přidáno řízení typu pro data [29] a také nové operátory.  

13. června 2019 vyšlo PHP 7.4. Do jádra byly přidány typizované vlastnosti a funkce šipek, stejně jako kovariance typu s ohraničeným návratem a kontravariance typu argumentu [30] .

PHP 8

PHP verze 8.0 byla vydána 26. listopadu 2020 [31] . Hlavní inovace byly [32] : podpora sjednocených typů [33] , kompilace JIT [34] a atributů (také známé jako anotace), také byla nahrazena „konstrukce“ přepínače shodným „výrazem“ a byl zaveden nový operátor Nullsafe přidal.

Dne 9. července 2020 vydal Dale Hirt , projektový manažer PHP  ve společnosti Microsoft, zprávu [35] v mailing listu , že po vydání PHP 8.0 Microsoft přestane podporovat vývoj tohoto programovacího jazyka pro Windows [36] . Specialisté Microsoftu kompilovali binární verze interpretu pro Windows a testovali jejich zabezpečení. Komunita vývojářů PHP oznámila, že podnikne všechna nezbytná opatření, aby v blízké budoucnosti nalezla alternativní možnost organizace podpory pro PHP 8.0 a vyšší pro Windows, například vlastními silami [37] . php.internals

Syntaxe

Syntaxe PHP je podobná syntaxi jazyka C. Některé prvky, jako jsou asociativní pole a smyčka foreach, jsou vypůjčeny z Perlu .

Lexikální analýza PHP se provádí pomocí utility re2c [38] [39] , která generuje rychlé a snadno vložitelné lexery.

Chcete-li napsat jednoduchý skript, nemusíte popisovat žádné proměnné, použité moduly atd. Jakýkoli skript může začínat přímo příponou <?php.

Nejjednodušší program Hello world v PHP vypadá takto:

<?php echo 'Ahoj světe!' ; ?>

Je také možná kratší verze výstupu řetězce:

<?= 'Ahoj, světe!' ?>

Značka úvodního pohledu se <?=používá ke zkrácení konstrukcí používaných k zobrazení čáry.

PHP spouští kód, který je uvnitř oddělovačů, jako je <?php ?>. Cokoli mimo meze je na výstupu nezměněno. To se používá hlavně pro vložení PHP kódu do HTML dokumentu, např.

< html > < head > < title > Testování PHP </ title > </ head > < body > <?php echo 'Ahoj světe!'; ?> </ body > </ html >

Kromě oddělovačů <?php ?>je povoleno (avšak uznáno za zastaralé a prakticky nepoužívané) použití zkrácené verze <? ?>. Kromě toho, před verzí 7.0, ASP <% %> a <script language="php"> </script>. Funkce zkratek je definována v konfiguračním souboru php .ini .

Názvy proměnných začínají symbolem $, typ proměnné není třeba deklarovat. V názvech proměnných a konstant se rozlišují velká a malá písmena. V názvech tříd, metod tříd a funkcí se nerozlišují velká a malá písmena. Proměnné jsou zpracovávány v řetězcích s dvojitými uvozovkami a řetězcích heredoc ( řetězce vytvořené operátorem <<<). Proměnné v řetězcích uzavřených v jednoduchých uvozovkách a nowdoc nejsou analyzovány.

Příkazy jsou odděleny středníkem ( ;), s výjimkou některých případů po deklaraci konstrukcí a cyklů if/else.

Proměnné lze předat funkci jak hodnotou, tak odkazem (používá se znaménko &).

PHP podporuje tři typy komentářů: C -style (oddělený /* */), C++ (začínající //a pokračující na konec řádku) a UNIX shell (s #do konce řádku).

Datové typy

PHP je dynamicky typovaný programovací jazyk , který nevyžaduje zadání typu při deklaraci proměnných, stejně jako deklaraci samotné proměnné.

Skalární datové typy zahrnují:

Mezi neskalární typy patří:

  • pole _
  • objekt _
  • externí zdroj (zdroj)
  • nedefinovaná hodnota (null)

Rozsah celých čísel (int) v PHP závisí na platformě (u 32bitové architektury rozsah čísel nepřesahuje int32_t, tedy od -2 147 483 648 do 2 147 483 647). Čísla lze zadávat v desítkových, osmičkových a šestnáctkových číselných soustavách. Rozsah reálných čísel (float) závisí také na platformě (u 32bitové architektury umožňuje rozsah pracovat s čísly od ±1,7×10 −308 do ±1,7×10 +308 ).

PHP poskytuje vývojářům booleovský typ , který může nabývat pouze dvou hodnot true("true") a false("false"). Při převodu na logickou hodnotu se číslo 0, prázdný řetězec, nula v řetězci "0" nulla prázdné pole považují za stejné false. Všechny ostatní hodnoty jsou automaticky převedeny na true.

Speciální typ null je pro proměnné bez definované hodnoty. Jedinou hodnotou tohoto typu je doslovný null. Typ null přijímá neinicializované proměnné, proměnné inicializované konstantou nulla také proměnné smazané pomocí unset().

Odkazy na externí zdroje jsou typu zdroj. Proměnné tohoto typu jsou zpravidla deskriptorem , který umožňuje spravovat externí objekty, jako jsou soubory, dynamické obrázky, výsledné databázové tabulky atd. Jak se jazyk vyvíjí, standardní knihovna se postupně zpřesňuje a zdroje jsou nahrazovány objekty . Proto se plánuje úplné odstranění tohoto typu.

Pole (pole) podporují číselné a řetězcové klíče a jsou heterogenní . Pole mohou obsahovat hodnoty libovolného typu, včetně jiných polí. Pořadí prvků a jejich klíče je zachováno. Není úplně správné nazývat php pole pole, ve skutečnosti je to s největší pravděpodobností uspořádaný hash . Neočekávané chování je možné při použití smyčky fors čítačem namísto foreach. Takže například při řazení pole s číselnými indexy podle funkcí ze standardní knihovny se třídí i klíče.

Psaní

Jazyk umožňuje psaní argumentů, návratových hodnot funkcí a metod tříd a od verze 7.4 také psaní polí tříd . Povolení přísného režimu deaktivuje implicitní převody typů v těchto částech kódu, což přibližuje chování jazyka jazykům se silným psaním .

Typy int, string, float, boolnebo jsou platnými definicemi typu argumentu, pole třídy nebo návratové hodnoty array. objectJe také povoleno používat názvy tříd nebo rozhraní k definování konkrétní implementace. Použití resourcepro definici typu není povoleno a indikace nullje možná s omezeními: Pouze v rámci definice typu součtu , například int|null(nebo ?int).

Moderní PHP implementuje základní podporu pro algebraické datové typy a umožňuje použití konjunkce i disjunkce při definování typu. Jazyk neumožňuje typové aliasy , ale poskytuje několik vestavěných implementací, které se v PHP označují jako "pseudotypy". Podobný termín v jazyce se používá pro jakoukoli definici typu, která není nezávislá, aplikovatelná na hodnotu, ale je implementována pouze jako instrukce kontroly typu v Zend VM.

Pseudotypy zahrnují:

  • smíšený jakýkoli typ
  • iterovatelné (pole nebo jakýkoli objekt, který implementuje rozhraní iterátoru ).
  • volatelné ( anonymní funkce , řetězec nebo pole) [40]
  • void návratový typ znamená, že funkce se nevrací
  • nikdy nevrací typ označující, že je aplikace přerušena
  • self je typ, který odkazuje na třídu, ve které byl tento typ použit (můžete použít alias parent nebo static, ale druhý je pouze jako návrat)
  • false type (bool part), který lze použít pouze jako jeden z prvků tzv. union type , např.int|false

Kromě typových kontrol mohou vestavěné „pseudotypy“ implementovat další kontrolní logiku. Typ může být například callablereprezentován:

  • řetězec, který musí obsahovat název funkce;
  • pole, kde nula a první prvky jsou řetězce (interpretované jako název funkce statické třídy);
  • pole, kde nulový prvek je objekt a první je řetězec (interpretovaný jako metoda na objektu).

Funkce

PHP podporuje jak deklaraci pojmenovaných funkcí, tak prvotřídní anonymní funkce , například:

// Deklarace funkce pojmenované funkce get_hello_world () : string { return 'Ahoj světe!' ; } // Deklarace anonymní funkce $getHelloWorld = function () : string { return 'Ahoj světe!' ; }; // Krátká syntaxe $getHelloWorld = fn () : string => 'Ahoj světe!' ;

Za zmínku stojí, že v případě anonymních funkcí není rozdíl pouze ve vizuálních rozdílech, ale také ve způsobu zachycení externích kontextových proměnných. Jakákoli "krátká" forma zápisu je uzávěr , zatímco dlouhý zápis k implementaci uzávěru vyžaduje explicitní specifikaci proměnných uvnitř operátoru usez vnějšího kontextu, aby je zachytil:

$variable = 'Ahoj světe!' ; // Použití příkazu use function () use ( $proměnná ) : string { return $proměnná ; }; // Alternativa, s použitím krátké syntaxe fn () : string => $proměnná ;

Přístup k proměnným a funkcím

K proměnným se přistupuje pomocí symbolu $následovaného názvem proměnné. Tuto konstrukci lze také použít k vytvoření dynamických proměnných a funkcí. [41] Například:

$a = 'Jsem a' ; // Zapíše hodnotu do $a echo $a ; // Výstupní proměnná $a $b = 'a' ; echo $$b ; // Zobrazit proměnnou $a (navíc $ před proměnnou $b) echo $ { 'a' }; // Výstupní proměnná $a název_funkce (); // Volání funkce název_funkce $c = 'název_funkce' ; $c (); //Volání funkce název_funkce $d = 'Název třídy' ; $obj = new ClassName ; // Vytvoří objekt třídy ClassName $obj = new $d (); // Vytvoří objekt třídy ClassName $obj -> b ; // Přístup k vlastnosti b objektu $obj -> c (); // Volání metody c() objektu $obj -> $b ; // Přístup k vlastnosti a objektu, protože $b = 'a' $obj -> $c (); // Volání metody function_name() objektu, protože $c = 'název_funkce'

Přestože v PHP echovypadají printjako funkce, první je operátor [42] a druhý je výraz (to znamená, že na rozdíl od ) printvrací hodnotu . echoPři jejich použití můžete vynechat závorky.

Superglobálové

Superglobální pole v PHP jsou předdefinovaná pole, která mají globální rozsah bez použití direktivy .  Většina těchto polí obsahuje vstupní data požadavku uživatele ( parametry požadavku GET , pole formuláře při odeslání metodou POST , soubory cookie atd.). global

Všechny superglobální společnosti, kromě $GLOBALSa $_REQUEST, mají zastaralé protějšky s dlouhými názvy, které jsou k dispozici až do verze 5.3. x (od verze 5.4.0 byly odstraněny). Vyvolání $_GET['year']a $HTTP_GET_VARS['year']jsou tedy totožná (kromě rozsahu: pole s "dlouhými" názvy nejsou superglobály).

$GLOBALS Pole všech globálních proměnných (včetně uživatelských). $_SERVER(analog pro zastaralé - $HTTP_SERVER_VARS) Obsahuje proměnné prostředí, které operační systém předává serveru. $_ENV(ústa $HTTP_ENV_VARS) Aktuální proměnné prostředí ( angl.  Environment variables ). Jejich sada je specifická pro platformu, na které skript běží. $_GET(ústa $HTTP_GET_VARS) Obsahuje parametry požadavku GET předávaného v URI za otazníkem " ?". $_POST(ústa $HTTP_POST_VARS) Asociativní pole hodnot polí formuláře HTML při odeslání pomocí metody POST. Indexy prvků odpovídají hodnotě vlastnosti nameobjektů (tlačítka, formuláře, přepínače, zaškrtávací políčka atd.) formuláře HTML. $_FILES(ústa $HTTP_POST_FILES) Asociativní pole s informacemi o souborech odeslaných metodou POST. Každý prvek má index, který je identický s hodnotou atributu „name“ ve formuláři, a je také polem s následujícími prvky:
  • ['name'] je původní název souboru v počítači uživatele.
  • ['type']je typ MIME souboru  určený uživatelským agentem . PHP to nekontroluje, a proto neexistuje žádná záruka, že zadaný typ je správný.
  • ['size'] — velikost souboru v bajtech.
  • ['tmp_name'] — úplná cesta k souboru v dočasné složce. Soubor je třeba odtud přesunout pomocí move_uploaded_file. PHP samo odstraní nahrané soubory z dočasné složky.
  • ['error'] - chybový kód. Pokud byl soubor úspěšně načten, bude tento prvek roven 0 ( UPLOAD_ERR_OK).
$_COOKIE(ústa $HTTP_COOKIE_VARS) Asociativní pole s hodnotami cookie předávanými uživatelským agentem . $_REQUEST Obsahuje prvky z polí $_GET, $_POST, $_COOKIE. Od PHP 4.1 obsahuje $_FILES. $_SESSION(ústa $HTTP_SESSION_VARS) Obsahuje data relace.

Objektově orientované programování

Klíčové slovo classbylo rezervováno ve třetí verzi jazyka. Ve čtvrté verzi bylo možné na jejich základě vytvářet třídy a objekty. Principy OOP však byly podporovány jen částečně, například všichni členové (proměnné i metody) byli veřejní. Navíc vytváření objektů bylo drahé a pomalé.

PHP má plnou podporu OOP od verze 5 . Práce s třídami byla optimalizována a nyní takový kód funguje poměrně rychle.

Třída v PHP je deklarována pomocí class. Metody a vlastnosti třídy mohou být veřejné ( public, výchozí), chráněné ( protected) a skryté ( private). PHP podporuje všechny tři hlavní OOP mechanismy - zapouzdření , polymorfismus podtypů a dědičnost (nadřazená třída je uvedena s klíčovým slovem extendsza názvem třídy). Rozhraní jsou podporována (mapováno pomocí implements). Deklarování konečných , abstraktních metod a tříd je povoleno. Vícenásobná dědičnost tříd není podporována, ale třída může implementovat více rozhraní. Klíčové slovo se používá pro přístup k metodám nadřazené třídy parent.

Od verze 5.4.0 lze vícenásobnou dědičnost implementovat pomocí mechanismu vlastností .  Funkce jsou podobné mixinům , kromě toho, že nemohou být vytvořeny přímo . Opětovné použití kódu spočívá v použití kódu funkce ve více třídách. V jedné třídě je povoleno používat několik funkcí. Mechanismus funkcí má prostředky pro řešení konfliktů jmen. Když je program spuštěn, kód funkce bude „zkompilován“ do kódu třídy, která ji obsahuje.  

Třídy v PHP mají řadu „magických“ metod ( angl.  magic methods ), počínaje dvěma podtržítky – konstruktorem ( __construct(), ve verzích před 5.0 byl konstruktor metodou stejného jména jako třída) a destruktorem ( __destruct()), stejně jako __get()metody čtení ( ) a zápisu ( __set()), skládání ( __sleep()) a rozšiřování ( __wakeup()), klonování ( __clone()) atd. Tyto metody jsou poměrně flexibilním nástrojem: jejich předefinováním můžete dosáhnout významné změny v chování objekt.

Všechny členské funkce jsou implementovány jako virtuální, a proto jsou všechny metodami.

Instance třídy se vytvářejí pomocí klíčového slova new, k vlastnostem a metodám objektu se přistupuje pomocí operátoru ->. Proměnná se používá pro přístup ke členům třídy z jejích metod $this.

třída C1 rozšiřuje C2 implementuje I1 , I2 { private $a ; chráněno $b ; public function __construct ( $a , $b ) { parent :: __construct ( $a , $b ); $toto -> a = $a ; $toto -> b = $b ; } public function plus () { return $this -> a + $this -> b ; } /* ............... */ } $d = nový C1 ( 1 , 2 ); echo $d -> plus (); // 3

Od PHP 5 jsou objekty předávány odkazem:

class A { public $color = 'červená' ; } $a = newA ( ); echo $a -> barva ; // červená $b = $a ; $b -> barva = 'modrá' ; echo $a -> barva ; // modrá

„Paamayim Nekudotayim“ ( hebrejsky : פעמיים נקודתיים) nebo jednoduše „dvojtečka“. Pomocí tohoto tokenu může programátor přistupovat ke konstantám, statickým nebo přetíženým vlastnostem nebo metodám třídy. Při odkazování na tyto prvky mimo třídu musí programátor použít název třídy. „Paamayim Nekudotayim“ se na první pohled může zdát jako zvláštní fráze pro dvojtečku. Při vytváření Zend Engine verze 0.5 (který byl součástí PHP3) však Andi a Zeev zvolili tento zápis [43] . „Paamayim Nekudotayim“ v hebrejštině skutečně znamená „dvojtečka“ (doslova: „dvojtečka“). Tento zápis se během vývoje PHP nikdy nezměnil [44] .

class MyClass { public const CONST_VALUE = 'Konstantní hodnota' ; } // Použití :: mimo deklaraci třídy echo MyClass :: CONST_VALUE ;

Vlastnosti tlumočníka

PHP skripty jsou obvykle zpracovávány interpretem v pořadí, které zajišťuje, že vyvíjená aplikace je multiplatformní :

  1. lexikální analýza zdrojového kódu a generování tokenů ,
  2. syntaktická analýza přijatých lexémů,
  3. generování operačního kódu pro virtuální stroj (druh bajtkódu ),
  4. optimalizace (například DCE ),
  5. provedení operačního kódu interpretem (bez vytvoření spustitelného souboru ), nebo JIT kompilace výsledku s následným spuštěním (v nastavení interpretru je vyžadován speciální příznak pro povolení JIT).

Dříve bylo možné pro zvýšení výkonu aplikací používat speciální software , tzv. akcelerátory . Princip jejich fungování spočívá v ukládání vygenerovaného bajtkódu do mezipaměti a/nebo na disk , takže fáze 1-3 jsou vyloučeny z procesu aplikace, což obecně vede k výraznému zrychlení. Od verze 5.5 byl do jádra zabudován jeden z akcelerátorů, opcache , takže řešení třetích stran již nejsou populární.

Důležitou vlastností je, že se vývojář nemusí starat o alokaci a uvolnění paměti. Jádro PHP implementuje prostředky pro automatickou správu paměti; veškerá přidělená paměť je vrácena systému po ukončení skriptu [45] .

Rozšíření

Interpret se skládá z jádra a zásuvných modulů , „rozšíření“ , což jsou dynamické knihovny . Rozšíření umožňují doplnit základní funkce jazyka a poskytují možnosti pro práci s databázemi , sokety , dynamickou grafikou , kryptografickými knihovnami, dokumenty PDF a podobně. Každý si může vyvinout vlastní rozšíření a připojit jej. Existuje obrovské množství rozšíření, jak standardních, tak vytvořených společnostmi a nadšenci třetích stran, ale jen pár desítek osvědčených je součástí standardního balíčku. V úložišti PECL je k dispozici mnoho rozšíření .

Od verze 7.4.0 byla do PHP přidána podpora FFI, což výrazně zjednodušuje interakci s knihovnami napsanými v jakémkoli jiném jazyce (včetně API poskytovaného operačním systémem). Tato nová funkce zase poskytla alternativu k psaní rozšíření. Pomocí FFI tedy můžete psát kód v PHP a komunikovat s libovolnými knihovnami v systému, které poskytují cdecl, fastcallnebo stdcall ABI .

Nastavení

PHP interpret má speciální konfigurační soubor  - php.ini, obsahující mnoho nastavení, jejichž změna ovlivňuje chování interpretu [46] . Je možné zakázat používání řady funkcí, změnit limity paměti RAM používané skriptem, dobu provádění, velikost stahovaných souborů, konfigurovat protokolování chyb, pracovat s relacemi a poštovními službami, připojovat další rozšíření a mnohem více. Velký konfigurační soubor je možné rozdělit na části. Běžnou praxí je například vkládat nastavení rozšíření do samostatných souborů. Možnosti interpretru lze přepsat v konfiguračních souborech HTTP serveru (například .htaccessv Apache ) nebo v samotném skriptu za běhu pomocí příkazu ini_set[47] .

Režimy spuštění interpretu (SAPI)

SAPI je externí abstraktní vrstva určená k zabudování tlumočníka do jiných aplikací a je zodpovědná za jeho provoz (spouštění, zastavování, předávání skriptů ke spuštění, přístup k externím datům). Existuje několik hlavních SAPI, které definují, jak lze PHP spouštět a používat:

  1. Jako modul k webovému serveru (například pro modul Apachemod_php ). V tomto případě PHP interpret běží v prostředí procesu webového serveru. Webový server spravuje počet procesů PHP, které běží, a říká jim, které skripty mají spustit.
  2. CGI SAPI. Použití CGI znamená spuštění nového procesu pro zpracování každého požadavku. Pro spuštění PHP skriptu se spustí webový server ./php-cgi /path/to/script.php. Už ze samotného principu takového použití vyplývá, že PHP interpret provede pouze jeden skript, po kterém svou práci dokončí. Náklady na spuštění procesu překladače a jeho inicializaci jsou velmi často srovnatelné nebo dokonce vyšší než náklady na spuštění PHP skriptu. K vyřešení tohoto problému byl v CGI SAPI zaveden režim FastCGI. V tomto režimu PHP interpret běží jako nezávislý server, který zpracovává příchozí požadavky na provádění PHP skriptů pomocí protokolu FastCGI, což mu umožňuje pracovat s libovolným webovým serverem, který tento protokol podporuje.
  3. FPM SAPI, známé jako php-fpm, je další implementací protokolu FastCGI. Původně vytvořil Andrey Nigmatulin jako samostatný patch pro použití na sociální síti Badoo. Tato implementace vyřešila řadu problémů, které bránily použití CGI/FastCGI SAPI. Zejména bylo možné restartovat fond PHP interpretů bez ztráty požadavků, provozovat několik poolů pod různými uživateli, nouzový restart interpretů v případě problémů s nimi a několik dalších pěkných doplňků. Následně na patchi pracovalo několik lidí, byl přidán režim pro dynamickou správu počtu běžících PHP procesů (podobně jako správa počtu procesů na webovém serveru Apache) a počínaje PHP 5.3.3 php-fpm PHP jako samostatné SAPI.
  4. Jako skript příkazového řádku (CLI SAPI), což je spustitelný soubor , který je volán uživatelem z příkazového řádku ; skript je spuštěn v prostředí volajícího uživatele. V tomto případě je možné pomocí PHP vytvářet klientské GUI aplikace [48] a řešit administrativní úlohy v operačních systémech UNIX , Linux , Microsoft Windows , Mac OS X a AmigaOS . V této funkci však nezískal popularitu a dal palmu Perlu , Pythonu a VBScriptu .

Počínaje PHP 5.4.0 má SAPI CLI schopnost spouštět PHP jako samostatný HTTP server. Tento režim je však čistě pro vývoj, protože spouští pouze jeden proces tlumočníka a provádí všechny dotazy čistě sekvenčním způsobem.

Velikonoční vajíčka

PHP má pár easter eggů (vtipů). Předání speciálních parametrů GET libovolnému skriptu php vede k výstupu různých obrázků.

Například:

any_script.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42

když zadáte tuto hodnotu do adresního řádku prohlížeče, můžete vidět různé obrázky v závislosti na verzi interpretu:

  1. fotka Thiese Arntzena (verze 4.1.2, 4.2.2)
  2. foto jezevčíka (majitel Stig Bakken ) (verze 4.3.2, 4.3.3, 4.3.8 - 4.3.10)
  3. fotografie černého teriéra (majitel Zeev Suraski ) (verze 4.3.11, 4.4.0 - 4.4.4, 5.1.0, 5.1.2)
  4. fotka králíka (verze 4.3.1, 5.0.0, 5.0.3)
  5. zdeformované logo PHP (verze 5.1.3 - 5.2.13) [49]
  6. foto hračky modrého slona s nápisem PHP (od verze 5.3.0) [49]

Následující dvě hodnoty vám umožní vidět standardní logo PHP a ZEND [49] :

any_script.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42

any_script.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42

Tyto hodnoty lze také získat přímo v PHP skriptu pomocí funkcí php_logo_guida zend_logo_guidpro logo Zend.

K dispozici je také speciální hodnota pro zobrazení seznamu všech autorů PHP (4,5) [49] :

any_script.php?=PHB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

Alternativní implementace

Vzhledem k popularitě jazyka PHP a touze zvýšit rychlost webových aplikací na něm založených bylo vytvořeno několik alternativních kompilátorů , které jsou jazyku PHP blízké. V únoru 2010 tedy Facebook otevřel [ 50] [51] svůj kompilátor PHP - HipHop (HPHP, Hyper-PHP), který generuje kód C++ , následovaný kompilací do strojového kódu pomocí gcc . V červenci 2013 ruská společnost VKontakte oznámila podobný produkt KPHP [52] .

Tabulka poskytuje seznam aktuálně existujících alternativních implementací.

název Verze PHP (cca) Licence Výsledek kompilace
PHP 7.4 GPL C++ , nativní kód
hip hop 5.4 Licence PHP C++ , nativní kód
Roadsend PHP 5.3 GPL / LGPL C , strojový kód
Phalanger 5.5 Paní SS-PL [53] ( Sdílený zdroj ) Microsoft IL
Quercus (součást webového serveru Resin ) 5.2 GPL nebo komerční JVM
PHC 5.2 BSDL C , strojový kód
Pipp [54] 5.3 Umělecká licence a GNU GPL Papoušek
JPHP [55] 7.1 (částečně 7.2, 7.3 a 7.4) [56] Apache 2.0 JVM
PHP 5.4 MIT PHP
PH7 5.5 Vlastní (Symisc Public License) C , strojový kód
HippyVM 5.6 MIT RPython/PyPy

Srovnávací analýza některých kompilátorů je dostupná na phpclasses.org [57] .

Licence

Ekosystém

Rámce

Redakční systémy

PHP je nejoblíbenější jazyk pro vývoj systémů pro správu obsahu (CMS).

Nástroje pro vývoj PHP aplikací

název Licence
Codelobster Freeware
Komodo Trojlicence Mozilla ( MPL / LGPL / GPL ) [58]
phpstorm Proprietární software
Vývojové nástroje PHP Eclipse Public License
zend studio shareware
Studio Aptana GNU GPL
phpDesigner shareware
PHP Expert Editor Shareware [59]
NetBeansIDE CDDL
RadPHP XE soud
NuSphere soud
KDevelop [60] GNU GPL
Microsoft Web Matrix Freeware
Poznámkový blok++ GNU GPL
Vznešený text Proprietární software
VS.Php pro Visual Studio Proprietární software
Nástroje PHP pro Visual Studio soud
DevelNext MPL-2.0
jEdit GNU GPL -2.0

Standardní doporučení PHP

Standardní doporučení PHP ( zkr. PSR  [ ) je specifikace PHP, která je vyvinuta, přijata a publikována skupinou autoritativních projektů PHP včetně CakePHP, Composer , Joomla, PEAR , Phalcon, phpDocumentor , TYPO3, Yii framework [61] . Specifikace slouží jako standardizace koncepcí programování v PHP a je založena na reálných zkušenostech i výzkumech a experimentech [62] . Účelem doporučení je zajistit kompatibilitu komponent webových aplikací vyvinutých různými vývojáři.

Kritika

Zastánci jazyka PHP uvádějí jako jeho hlavní výhody široké používání, poptávku po PHP vývojářích na trhu práce a snadnost učení. Mezi výhody jazyka patří jeho poměrně rychlý vývoj.

Nedostatek podpory pro vícebajtové kódování v jádru jazyka

Podpora pro řetězce s vícebajtovým kódováním (jako je UTF-8 ) je implementována prostřednictvím samostatných rozšíření mbstringa iconv, na úrovni jádra neexistuje žádná podpora, nicméně od PHP 4.2.0 je možné přepsat standardní funkce pro práci s řetězci a nahradit je s analogy z mbstring. Podpora vícebajtových kódování ve všech funkcích řetězců je k dispozici od verze 5.4.0 (březen 2012).

Nedostatek podpory multithreadingu

Jazyk neposkytuje možnost vytvářet vícevláknové aplikace a chybí podpora synchronizovaného přístupu ke zdrojům, je však implementován pomocí rozšíření PCNTL [63] (z anglického  process control ), ale není vhodný pro řešení konkrétních problémů.

Ačkoli je možné nainstalovat rozšíření pthreads pro „čestná“ vlákna, k tomu musí být interpret zkompilován s příznakem bezpečnosti vlákna a samotné rozšíření bylo zastaralé ve prospěch paralelního (od stejného autora).

Modernější alternativou je použití nástavce Swoole.

Viz také

Poznámky

  1. 1 2 3 4 http://php.net/manual/cs/history.php.php
  2. 1 2 https://www.technotification.com/2018/04/best-php-frameworks.html
  3. 1 2 http://lerdorf.com/bio/  _
  4. Verze 8.1.12 – 2022.
  5. Skupiny Google
  6. PHP: Historie PHP - Manuál
  7. https://fileinfo.com/extension/php
  8. 1 2 3 PHP: Předmluva – Manuál
  9. Rasmus Lerdorf | PHP na hormony - 2013.
  10. http://php.net/license/
  11. 1 2 3 PHP: Historie PHP - Manuál . Datum přístupu: 18. ledna 2009. Archivováno z originálu 1. února 2009.
  12. ↑ PHP : Předmluva - Manuál  . Archivováno z originálu 21. srpna 2011.
  13. 1 2 Software TIOBE: Tiobe Index . Získáno 2. listopadu 2009. Archivováno z originálu dne 22. června 2013.
  14. Historie PHP a souvisejících  projektů . Archivováno z originálu 21. srpna 2011.
  15. PHP: Funkce – Manuál (21. června 2009). Získáno 13. listopadu 2009. Archivováno z originálu 21. srpna 2011.
  16. Rasmus Lerdorf. Zajímalo by mě, proč lidé stále píší, že PHP bylo napsáno v Perlu. To nikdy nebylo. #php  (anglicky) . @rasmus (20. července 2012). Staženo 8. ledna 2019. Archivováno z originálu 3. ledna 2018.
  17. Savelyeva N. Přednáška 1: Úvod do PHP / PHP Programming Language. Archivováno 22. ledna 2015 na Wayback Machine Intuit, 2005. ISBN 978-5-9556-0026-0
  18. Počet funkcí přepsaných s podporou Unicode . Datum přístupu: 19. ledna 2007. Archivováno z originálu 19. ledna 2007.
  19. Soubor news.txt z distribuce PHP 6 (downlink) . Datum přístupu: 19. ledna 2007. Archivováno z originálu 12. prosince 2008. 
  20. PHP 6 Current Hotovo a Backlog . Získáno 7. dubna 2008. Archivováno z originálu 18. dubna 2008.
  21. Úplný seznam změn plánovaných na prosinec 2005 . Získáno 12. srpna 2006. Archivováno z originálu 12. srpna 2006.
  22. How PHP6 Died Archived 13. října 2011 na Wayback Machine // amiro.ru
  23. PHP RFC: Název příští verze PHP . Získáno 28. března 2015. Archivováno z originálu 3. července 2017.
  24. PHP RFC: Časová osa PHP 7.0 . Datum přístupu: 28. března 2015. Archivováno z originálu 17. března 2015.
  25. ↑ Nejúžasnější funkce PHP 7 : Vesmírné lodě, tipy na typ, 2X rychlost  . www.zend.com. Získáno 6. července 2017. Archivováno z originálu 8. července 2017.
  26. PHP: Archiv novinek - 2015 . Datum přístupu: 12. prosince 2015. Archivováno z originálu 12. prosince 2015.
  27. PHP: rfc:phpng . php.net . Datum přístupu: 16. prosince 2014. Archivováno z originálu 19. října 2014.
  28. RFC: Návratové typy . php.net . Získáno 28. března 2015. Archivováno z originálu 17. července 2017.
  29. RFC: Deklarace skalárního typu . php.net . Získáno 28. března 2015. Archivováno z originálu 7. července 2017.
  30. PHP: Nové funkce – Manuál . Staženo 2. května 2020. Archivováno z originálu dne 2. května 2020.
  31. PHP: Archiv novinek - 2020 . Získáno 29. listopadu 2020. Archivováno z originálu dne 13. října 2020.
  32. Co je nového v PHP 8 - stitcher.io . Staženo 3. května 2020. Archivováno z originálu dne 19. května 2020.
  33. PHP: rfc: union_types_v2 . Staženo 3. května 2020. Archivováno z originálu dne 1. dubna 2020.
  34. PHP:rfc:jit . Staženo 3. května 2020. Archivováno z originálu dne 18. května 2020.
  35. Dale Hirt – Microsoft Support of PHP on Windows Archived 16. července 2020 na Wayback Machine 
  36. Windows 10 přestane podporovat PHP Archivováno 16. července 2020 na Wayback Machine  (ruština)
  37. Microsoft nebude podporovat PHP 8.0 pro Windows . Staženo 16. července 2020. Archivováno z originálu dne 17. července 2020.
  38. Vytváření  PHP . Interní kniha PHP. Získáno 1. března 2022. Archivováno z originálu dne 8. května 2021.
  39. ↑ RE2C : Generátor lexerů založený na dopředné TDFA  . Softwarové dopady. Získáno 1. března 2022. Archivováno z originálu dne 27. ledna 2022.
  40. PHP: Funkce zpětného volání (Funkce zpětného volání) - Manuál . secure.php.net. Získáno 27. února 2019. Archivováno z originálu dne 28. února 2019.
  41. PHP: Proměnné proměnné – Manuál . Získáno 17. prosince 2008. Archivováno z originálu 11. května 2008.
  42. PHP: echo - Manuál . Datum přístupu: 14. ledna 2010. Archivováno z originálu 24. února 2009.
  43. Zřejmě vypůjčeno z jazyka C++ , kde se jedná o binární formu určující rozsah , konstrukci s ním, kvalifikované jméno , v tomto případě konstantu.
  44. http://php.net/manual/en . Získáno 25. března 2010. Archivováno z originálu 12. června 2010.
  45. PHP: Základní správa paměti – Manuál (13. listopadu 2009). Získáno 17. listopadu 2009. Archivováno z originálu dne 21. srpna 2011.
  46. PHP: Direktivy php.ini – Manuál  ( 6. listopadu 2009). Získáno 13. listopadu 2009. Archivováno z originálu 21. srpna 2011.
  47. PHP: Seznam direktiv php.ini – Manuál  ( 6. listopadu 2009). Získáno 13. listopadu 2009. Archivováno z originálu 21. srpna 2011.
  48. PHP: Používání PHP na příkazovém řádku – manuál (21. června 2009). Získáno 13. listopadu 2009. Archivováno z originálu 21. srpna 2011.
  49. 1 2 3 4 PHP Easter Egg  . Získáno 16. listopadu 2009. Archivováno z originálu dne 21. srpna 2011.
  50. HipHop pro PHP: Rychlý pohyb
  51. Facebook otevřel kód pro vysoce výkonný překladač PHP . Získáno 3. února 2010. Archivováno z originálu 6. února 2010.
  52. Pavel Durov a kolegové vyvinuli vylepšenou verzi PHP . Získáno 2. ledna 2014. Archivováno z originálu 12. prosince 2013.
  53. Text  licence
  54. Projekt je v experimentální fázi
  55. Projekt je ve fázi experimentu. Nejnovější verze 1.3.1 (od července 2020)
  56. jphp-group/  jphp . GitHub. Získáno 18. listopadu 2018. Archivováno z originálu 5. října 2018.
  57. Výkon kompilátoru PHP . Získáno 1. března 2010. Archivováno z originálu 26. února 2010.
  58. Komodo IDE je profesionální vývojové prostředí pro Perl, Python, Tcl | ActiveState (downlink) . Získáno 22. listopadu 2011. Archivováno z originálu 20. prosince 2008. 
  59. Je poskytována bezplatná registrace pro občany bývalého SSSR
  60. Podpora PHP pro KDevelop 4 (a případně Quanta+) | Millian Wolff . Datum přístupu: 11. prosince 2010. Archivováno z originálu 2. ledna 2011.
  61. Personál  . _ Získáno 1. srpna 2020. Archivováno z originálu dne 2. června 2020.
  62. ↑ Poslání a struktura  . Získáno 1. srpna 2020. Archivováno z originálu dne 1. srpna 2020.
  63. PCNTL . Datum přístupu: 23. ledna 2012. Archivováno z originálu 17. ledna 2012.

Literatura

  • Matt Zandstra. PHP: Objects, Patterns and Practices = Objekty, vzory a praxe PHP, třetí vydání. — 3. vydání. - M .: " Williams ", 2010. - S. 560. - ISBN 978-5-8459-1689-1 .
  • Christian Dari, Emilian Balanescu. PHP a MySQL: Budování online obchodu = Začátek elektronického obchodování s PHP a MySQL: Od začátečníka po profesionála. - M .: " Williams ", 2010. - ISBN 978-5-8459-1602-0 .
  • Jason Langstorf. PHP a jQuery pro profesionály = Pro PHP a jQuery. - M .: " Williams ", 2010. - S. 352. - ISBN 978-5-8459-1693-8 .
  • Quentin Zervas. Web 2.0: Vytváření aplikací s PHP = Praktické aplikace Web 2.0 s PHP. - M .: " Williams ", 2009. - S. 544. - ISBN 978-5-8459-1590-0 .
  • Kuzněcov Maxim, Simdjanov Igor. PHP 5/6. - Petrohrad. : " BHV-Petersburg ", 2009. - S. 1024. - ISBN 978-5-9775-0304-4 .
  • Kuzněcov Maxim, Simdjanov Igor. Objektově orientované programování v PHP. - Petrohrad. : " BHV-Petersburg ", 2007. - S. 608. - ISBN 978-5-9775-0142-2 .
  • Ed Lecky-Thompson, Alec Kove, Stephen Nowitzki, Hyao Eyde-Goodman. PHP 5 pro profesionály = Professional PHP 5. - M . : " Dialektika ", 2006. - S. 608. - ISBN 0-7645-7282-2 .
  • Kuzněcov Maxim, Simdjanov Igor. Výuka PHP 5/6. - 3. vyd., revidováno. a doplňkové - Petrohrad. : " BHV-Petersburg ", 2009. - S. 672. - ISBN 978-5-9775-0409-6 .
  • Kuzněcov Maxim, Simdjanov Igor. PHP. Praxe tvorby webových stránek. - 2. vyd. revidováno a doplňkové - Petrohrad. : " BHV-Petersburg ", 2008. - S. 1264. - ISBN 978-5-9775-0203-0 .
  • Kuzněcov Maxim, Simdjanov Igor. PHP hádanky pro hackery. - 2. vyd. revidováno a doplňkové - Petrohrad. : " BHV-Petersburg ", 2008. - S. 544. - ISBN 978-5-9775-0204-7 .
  • Kuzněcov Maxim, Simdjanov Igor. PHP s příklady. - 2. vyd. revidováno a doplňkové - Petrohrad. : " BHV-Petersburg ", 2011. - S. 400. - ISBN 978-5-9775-0445-4 .
  • Luke Welling, Laura Thomsonová. Vývoj webových aplikací s PHP a MySQL. - 5. vyd. - Petrohrad. : " Dialektika ", 2019. - S. 768. - ISBN 978-5-9908911-9-7 .
  • Luke Welling, Laura Thomsonová. Vývoj webových aplikací PHP a MySQL. — páté vydání. - " Adison-Wesley ", 2017. - S. 687. - ISBN 978-0-321-83389-1 .
  • Zandstra M. PHP. Objekty, vzory a programovací techniky. - 4. vyd. - Petrohrad. : " Dialektika ", 2015. - S. 576. - ISBN 978-5-8459-1922-9 .
  • Zandstra M. PHP. Objekty, vzory a programovací techniky. - 5. vyd. - Petrohrad. : " Dialektika ", 2019. - S. 736. - ISBN 978-5-907144-54-5 .
  • Zandstra M. Objekty, vzory a praxe PHP . — 5. vydání. - " Apress ", 2016. - S.  583 . — ISBN 978-1-4842-1995-9 .
  • Nixon R. Vytváření dynamických webových stránek s PHP, MySQL, JavaScript, CSS a HTML5. - 4. vyd. - Petrohrad. : " O'Reilly Bestsellers ", 2016. - S. 768. - ISBN 978-5-496-02146-3 .
  • Ulmane, Larry. PHP a MySQL: tvorba internetových obchodů. - 2. vyd. - Petrohrad. , 2015. - S. 544. - ISBN 978-5-8459-1939-7 .
  • Kuzněcov M., Simdjanov I. Samoinstrukční příručka PHP 7. - 2. vyd. - Petrohrad. , 2018. - S. 448. - ISBN 978-5-9775-3817-6 .

Odkazy