PHP

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 2 oktober 2022; kontroller kräver 7 redigeringar .
PHP
Språkklass multiparadigm , objektorienterad , imperativ
Framträdde i 8 juni 1995 [5] [6]
Författare Rasmus Lerdorf [3]
Utvecklaren Rasmus Lerdorf [1] , Andy Gutmans [1] , PHP Group [d] , Zend Technologies [2] och Zeev Sourasky
Filtillägg _ .php[7]
Släpp
Blivit påverkad C ++ , Perl [8] , SI [8] , Java [8] , TCL [9] , HTML och JavaScript
Licens PHP-licens [10]
Hemsida Php.net (  engelska)
OS Unix-liknande operativsystem och Microsoft Windows
 Mediafiler på Wikimedia Commons

PHP ( /pi:.eɪtʃ.pi:/ Engelska  PHP: Hypertext Preprocessor  - "PHP: hypertext preprocessor "; ursprungligen PHP / FI (Personal Home Page / Form Interpreter), och senare kallad Personal Home Page Tools [11]  - " Tools för att skapa personliga webbsidor ”) -C-liknande skriptspråk [12] av allmänt syfte, intensivt använt för att utveckla webbapplikationer. Stöds för närvarande av de allra flesta värdleverantörer och är en av de ledande bland språk som används för att skapa dynamiska webbplatser [13] .

Språket och dess tolk ( Zend Engine ) utvecklas av en grupp entusiaster som en del av ett projekt med öppen kod [14] . Projektet distribueras under sin egen licens som är inkompatibelt med GNU GPL .

Omfattning

Inom området webbprogrammering, i synnerhet serversidan, är PHP ett av de populära skriptspråken (tillsammans med JSP , Perl och språken som används i ASP.NET ).

Populariteten inom området för att bygga webbplatser bestäms av närvaron av en stor uppsättning inbyggda verktyg och ytterligare moduler för att utveckla webbapplikationer [15] . De viktigaste är:

Används av hundratusentals utvecklare från och med 2010-talet; Enligt TIOBEs rankning baserad på sökmotordata låg PHP i maj 2016 på 6:e plats bland programmeringsspråken [13] .

Ingår i LAMP  - en vanlig uppsättning mjukvara för att skapa och vara värd för webbplatser ( Linux , Apache , MySQL , PHP), samt LEMP - en lika vanlig uppsättning mjukvara ( Linux , Nginx , MySql , PHP).

Webbplatser som använder PHP inkluderar Facebook , Wikipedia , Yahoo! , Baidu .

Ytterligare funktioner

Språket stöder automatiskt HTTP-COOKies i enlighet med Netscapes standarder. Detta gör att du kan ställa in och läsa små segment av data på klientsidan. Arbetet med cookies organiseras genom sessioner (sessioner). Sessioner har ett utgångsdatum (efter att det löper ut raderas data), i sessioner kan du lagra och redigera olika typer av data, inklusive serialiserade - passerade genom serialize (processen sker automatiskt), PHP-objekt.

Skapa GUI-applikationer

PHP är inte fokuserat på att skapa skrivbordsapplikationer, men det finns ett behov av att skapa gränssnitt för att sätta upp servrar, kontinuerlig exekvering, felsökning av skript (skript), hantera lokala och testservrar etc. På grund av detta uppstod lösningar på detta problem.

Tillägg

Den huvudsakliga användningen av tillägg är att lägga till användargränssnittsbibliotek (UI-bibliotek).

Tillägg är villkorligt indelade i tre grupper:

  • PHP-tillägg: WxPHP ( Windows , Linux , macOS ), Winbinder ( Windows );
  • wrappers som använder systemfunktioner med FFI-verktyg: Win32Std, Tk;
  • Omslag för användning av kommandoradsgränssnittet: PHP-UI, PHP-XCB.

Tillägg, såsom en tvåvägs omslag, har utvecklats för att använda andra språk när du skriver PHP-tillägg, och vice versa. Till exempel är PSV Component Library ett projekt som består av tre delprojekt:

  • PHP4Delphi implementerar PHP-anslutningar till program skrivna i Delphi med WinAPI ; utvecklats sedan 1999, men inte uppdaterats sedan 2009, på grund av vilka grenar dök upp;
  • PHP-tilläggsutvecklingsramverk - ett verktyg för att skapa PHP-tillägg, VCL-komponenter är en integrerad del av PHP4Delphi, vars grundläggande komponenter behövs för att skapa applikationer;
  • php4Applications är ett tillägg för att använda PHP på andra språk, baserat på PHP4Delphi, vilket ger tillgång till makron och förenklar användningen av PHP genom att eliminera behovet av att skapa ett omslag.
Utvecklingsmiljö (IDE)

Det finns en plats för fullfjädrad utvecklingsmiljö för GUI PHP:

  • DevPHP

En pionjär i denna kategori är DevPHP-IDE-studion, som använde Kylix ( Delphi ) som ryggraden i gränssnittet och phpcli för att bygga anpassade program.

Den innehöll en kodredigerare, flera verktyg och en visuell HTML-visare.

Den introducerades först 2002, nu har den 3 stabila versioner, men utvecklingen fortsätter inte - den stoppades på grund av huvudutvecklarens död i en bilolycka.

  • CodeGear Rad Studio (tillägg)

Efter DevPHP IDE dök en tillägg upp - en uppsättning komponenter för CodeGear Rad Studio 2009 baserad på php4delphi med några förbättringar (webbelement, inspektör, debugger), dess stöd varade i fyra versioner, varav den andra ingick i den betalda tillägget Rad Studio 2010 : det fanns en möjlighet att använda skript, stil webbkomponenter, visa stilar och webbsidor innan programmet byggdes, köra en lokal server, bygga programmet som en fristående applikation och felsöka koden. Med utdata från Delphi XE kallas expansionen Radphp XE. Dessutom blev studion känd som Embarcadero Delphi, och arbetet med denna förlängning avbröts på obestämd tid.

  • DEVELSTUDIO (RAD)

2009, på basis av php4delphi, började utvecklingen av en miljö för att skapa grafiska PHP-applikationer, som senare fick sällskap av Rostislav Romanov. Miljön kallades PHP DevelStudio, den första publicerade versionen var 0.1.7. DevelStudio hade ett litet antal komponenter i verktygslådan och körde på föråldrade PHP 4. I den andra versionen fick DevelStudio stöd för PHP 5. Strömmar lades till och många ändringar och förbättringar gjordes. Monteringskoden för program har stängts, tidigare versioner av programmet och meddelanden på forumet har tagits bort för att förhindra inkräktare.

Den andra versionen av DevelStudio fick också en uppsättning AlphaControls-komponenter, som ett resultat av vilka den användes för att skapa skadlig programvara på grund av dess enkelhet och tydlighet. Populära antivirus vid den tiden (MacAffee, AVG , Avira ) började känna igen alla program som kompilerades i DevelStudio som virus.

Efter en tid lämnade författaren till AlphaControls ett klagomål till utvecklarna av DevelStudio, och uppsättningen komponenter togs bort helt från miljön, men den bevarades i en redan befintlig version, som inte kunde tas bort från forumet den här gången .

Vid tiden för 2012 släpptes den senaste versionen av miljön - 3.0.2, där en ny uppsättning komponenter dök upp, inklusive Chromium- webbläsaren istället för IE , som väckte uppmärksamhet från webbutvecklare och användare av Algoritm-miljön. På den tiden var det betalt för att kompilera program i Algorithm, så DevelStudio, som en ny och gratis utvecklingsmiljö, lockade de flesta av publiken till sig.

2014 började de första försöken att återställa miljön, denna gång av samhället . I slutet av 2018 återställdes källkoden och var tillgänglig i GitHub .

Under 2019 kontaktade communityn skaparen av DevelStudio för att ändra miljöns distributionspolicy och göra den tillgänglig för uppdatering och redigering. På grund av klagomål om bristen på länkar till biblioteken som används (DCEF, PHP4Delphi, TSizeCtrl, SynEdit), togs forumet bort och en av sidorna som beskriver miljön omdirigerades till sidans huvudsida. Från och med nu ägs DevelStudio officiellt av communityn.

  • DEVELNEXT (DN)

Parallellt med detta började huvudutvecklaren DevelStudio skapa en "reinkarnation" av den tidigare miljön. Han tog JavaFX -grafikbiblioteket som bas , vilket resulterade i en helt ny miljö, med CSS- stöd , men utan fullt stöd för Zend PHP- biblioteket  - projektet baserades på ett eget jPHP-språk. Dess funktioner är arbete med JVM , JIT -kompilator, Unicode - stöd , multithreading och ett objektorienterat standardbibliotek.

I den 16:e versionen fick DevelNext-miljön stöd för php 7, och parallellt med detta utökades jPHP av en entusiast för utveckling under Android OS .

För tillfället arbetar författaren och entusiaster på 2020 års version (tidigare 17:e).

  • PHPQT

2015 började Alexander Kazantsev studera algoritmer för gränssnittsutveckling och skapade tillägget php_qml, som gjorde det möjligt att använda widgets från QT-biblioteket, men det fungerade bara under Windows.

Med detta började utvecklingen av PHPQt, de första versionerna ägnade inte mycket uppmärksamhet från webbutvecklare, så författaren började förbättra tillägget på djupet.

Den 28 juli 2015 publicerades den första versionen av projektkompilatorn, vid den tiden var det en enkel script (script) executor som kopplade php-kod till stubben (som DevelStudio), och hade ett beroende av Windows API, kl. I detta skede stöddes nästan alla widgets och multithreading, det var en enkel optimering av php-koden. Från det ögonblicket hette motorn PQEngine,

Den 3 augusti 2016 släpptes den femte versionen av applikationskompilatorn (PqBuilder), som bytte till PlastiQ-basen och hade stöd för de senaste, vid den tiden, php 7, projekten fick en mer komplett kompilator och krävde inte längre närvaron av PqEngine.dll nära den körbara filen, istället Denna visuella bibliotek började läggas till dynamiskt - som filer, och inte sys in i PQEngine.dll. Detta steg togs för kompatibilitet med andra system och de ursprungliga Qt-biblioteken.

Med tillkomsten av den sjätte versionen blev projektet ett tillägg till Qt Studio-miljön, och kompilatorn blev bara en kodoptimerare innan den slutliga monteringen av programmet. En fullfjädrad gränssnittsredigerare dök upp, tips i kodredigeraren och dokumentation började skapas. Från det ögonblicket gjorde de ett tillkännagivande om skapandet av PqStudio-miljön, men dess utveckling gick inte långt.

  • Winforms Php

Under 2018 dök ett projekt upp som kombinerar funktionerna i Windows Forms (.NET Framework) och PHP 7. Dess utveckling pågår fortfarande i långsam takt.[ när? ] . För tillfället finns nästan allt i motorn[ vad? ] funktioner för OOP. Miljön är under privat utveckling. Den körbara standarden kommer med php7ts.dll.

Ansluter PHP till ett projekt

Det finns också tillägg för motsatt användning - att koppla PHP till ett projekt i ett annat programmeringsspråk: Phalanger (C#, php från 5.4 till 7), Peachpie] (C#, php 7), PHP4Delphi (Lazarus, Delphi, C#, C, C++ , php 5.6, JPHP (Java, php 7.0), PHPly (Python, php 5.6)

Historik

1994 utvecklade den danske programmeraren Rasmus Lerdorf i C [16] en uppsättning CGI-skript för att ta hänsyn till besökare på hans online- CV , som bearbetar HTML - dokumentmallar. Lerdorf kallade uppsättningen Personal Home Page Tools (Verktyg för en personlig hemsida ). Snart räckte inte funktionaliteten längre, och Lerdorf utvecklade en ny PHP/FI -malltolkare ( Engelsk  personlig startsida/formulärtolk  – “personlig hemsida/formulärtolk”) [17] .

Den 8 juni 1995 släpptes version 1.0 av Personal Home Page (PHP Tools) - den första offentliga utgåvan.

1997 , efter en lång betatestning, släpptes den andra versionen av hanteraren skriven i C  - PHP / FI 2.0. Den användes av cirka 1 % (ungefär 50 tusen) av alla internetdomäner i världen [11] .

PHP 3.0 har genomgått en betydande översyn som definierar det moderna utseendet och stilen på programmeringsspråket. 1997 skrev två israeliska programmerare, Andy Gutmans och Zeev Suraski , om tolkkoden helt och hållet. PHP 3.0 släpptes officiellt i juni 1998 [11] .

En av styrkorna med PHP 3.0 var möjligheten att utöka kärnan med ytterligare moduler. Därefter lockade tilläggsskrivgränssnittet många tredjepartsutvecklare till PHP som arbetar med sina moduler, vilket gjorde det möjligt för PHP att arbeta med ett stort antal databaser , protokoll och stödja ett stort antal API:er . Ett stort antal utvecklare ledde till den snabba utvecklingen av språket och den snabba tillväxten av dess popularitet. Från och med den här versionen står php- akronymen för "PHP: hypertext Preprocessor", istället för den föråldrade "Personal Home Page".

Vintern 1998, nästan omedelbart efter den officiella releasen av PHP 3.0, började Andy Gutmans och Zeev Suraski omarbeta PHP-kärnan. Målen inkluderade att öka prestandan för komplexa applikationer och förbättra modulariteten i PHP-kodbasen. Den nya motorn, kallad Zend Engine , klarade uppgifterna framgångsrikt och introducerades först i mitten av 1999 . PHP 4.0 , baserat på denna motor och för med sig en uppsättning ytterligare funktioner, släpptes officiellt i maj 2000 . Förutom prestandaförbättringar hade PHP 4.0 flera andra nyckelinnovationer, såsom sessionsstöd, outputbuffring , säkrare sätt att hantera användarinmatning och flera nya språkkonstruktioner.

Den femte versionen av PHP släpptes av utvecklarna den 13 juli 2004 . Ändringar inkluderar Zend ( Zend Engine 2 ) kärna, som avsevärt ökade effektiviteten hos tolken . Introducerat stöd för XML -markeringsspråk . Funktionerna i OOP är helt omgjorda , som har blivit i stort sett likna den modell som används i Java . I synnerhet introducerades förstöraren , öppna, stängda och skyddade medlemmar och metoder , slutliga medlemmar och metoder, gränssnitt och kloningsobjekt. I efterföljande versioner infördes också mellanrummen för namn , stängning och ett antal ganska allvarliga ändringar, kvantitativt och kvalitativt jämförbara med de som dök upp under övergången till PHP 5.0.

Den sjätte versionen av PHP har varit under utveckling sedan oktober 2006 [18] . Många innovationer har gjorts [19] [20] , som att ta bort POSIX reguljära uttryck och "långa" superglobals från kärnan, och att ta bort direktiven safe_mode , magic_quotes_gpc och register_globals från php.ini- konfigurationsfilen. En av de viktigaste innovationerna var tänkt att vara stöd för Unicode [21] . Men i mars 2010 ansågs utvecklingen av PHP6 inte lovande [22] på grund av svårigheter med Unicode-stöd. PHP6-källkoden har flyttats till , och version 5.4 har blivit huvudlinjen i utvecklingen.

PHP 7

2014 hölls en omröstning, vilket ledde till att nästa version kallades PHP 7 [23] . Släppningen av den nya versionen var planerad i mitten av oktober 2015 [24] . I mars 2015 presenterade Zend infographics , som beskriver de viktigaste innovationerna i PHP 7 [25] .

Den 3 december 2015 tillkännagavs lanseringen av PHP version 7.0.0 [26] .

Den nya versionen är baserad på den experimentella grenen av PHP, som ursprungligen kallades PHPNG ( engelska  Php Next Generation "The next generation"), och utvecklades med tonvikt på att öka produktiviteten och minska minnesförbrukningen [27] . Den nya versionen lägger till möjligheten att indikera vilken typ av data som returneras från datan [28] , kontrollen av överförda typer för data lades till [29] , liksom nya operatörer.

Den 13 juni 2019 släpptes PHP 7.4. Typiska egenskaper och valdeltagande funktioner lades till kärnan, såväl som den begränsade kovarianen av den returnerade typen och förfalskningstypen av argument [30] .

PHP 8

PHP version 8.0 släpptes den 26 november 2020 [31] . De viktigaste innovationerna var [32] : stöd för unionstyp [33] , JIT-kompilering [34] och attribut (även känd som annoteringar), Switchs "struktur" ersattes med "expression" MATCH och den nya NULLSAFE-operatören lades till .

Den 9 juli 2020 släppte Dale Hirt , PHP  Project Manager på Microsoft, ett meddelande [35] i en e-postlista som säger att efter lanseringen av PHP 8.0 kommer Microsoft att sluta stödja utvecklingen av detta programmeringsspråk för Windows [36] . Microsoft-specialister kompilerade binära versioner av tolken för Windows och testade deras säkerhet. PHP-utvecklargemenskapen rapporterade att de skulle vidta alla nödvändiga åtgärder för att hitta ett alternativt alternativ för att organisera stöd för PHP 8.0 och högre för Windows inom en snar framtid, till exempel på egen hand [37] . php.internals

Syntax

Syntaxen för PHP liknar den för C- språket . Vissa element, som associativa arrayer och loopen foreach, är lånade från Perl .

Den lexikaliska analysen av PHP utförs med hjälp av verktyget RE2C [38] [39] , verktyget genererar snabba och lätta inbyggda föreläsningar.

För att skriva det enklaste skriptet, är det inte nödvändigt att beskriva några variabler som används moduler, etc. Alla skript kan börja direkt med operatorn <?php.

Det enklaste Hello world-programmet i PHP ser ut så här:

<?php Echo "HEJ, värld!" ; ?>

En kortare version av strängutgången är också möjlig:

<?= 'Hej världen!' ?>

Taggen för öppningsvy <?=används för att förkorta de konstruktioner som används för att visa en linje.

PHP exekverar koden inuti limiters, såsom <?php ?>. Allt utanför gränserna matas ut oförändrat. Detta används främst för att infoga PHP-koden i HTML-dokumentet, till exempel enligt följande:

< html > < huvud > < Titel > Testar PHP </ title > </ head > < body > <?php echo 'Hej världen!'; ?> </ body > </ html >

Förutom avgränsare <?php ?>är det tillåtet (men erkänt som föråldrat och praktiskt taget inte använt) användning av en förkortad version <? ?>. Dessutom, före version 7.0, ASP <% %> och <script language="php"> </script>. Genvägars arbete definieras i php .ini -konfigurationsfilen .

Variablernas namn börjar med symbolen $, typen av variabel behöver inte deklareras. Namnen på variabler och konstanter är känsliga för teckenregistret. Namn på klasser, klassmetoder och funktioner är inte skiftlägeskänsliga. Varier bearbetas i rader omslutna av dubbla citattecken och en HREDOC -Stocks (rader skapade med operatorn <<<). Variabler i strängar omslutna av enkla citattecken och nowdoc tolkas inte.

Påståenden separeras med semikolon ( ;), förutom i vissa fall efter deklarationen av if/else-konstruktioner och loopar.

Variationer till funktionen kan överföras både med värde och genom referens (tecknet används &).

PHP stöder tre typer av kommentarer: i stil med SI (begränsad /* */), C ++ (startar C //och går till slutet) och UNIX-skal ( C #till slutet av raden).

Datatyper

PHP är ett dynamiskt skrivet programmeringsspråk som inte kräver att en typ anges när variabler deklareras, såväl som själva variabeldeklarationen.

Skalära datatyper inkluderar:

Icke-skalära typer inkluderar:

  • array _
  • objekt _
  • extern resurs (resurs)
  • odefinierat värde (null)

Omfånget av heltal (int) i PHP beror på plattformen (för en 32-bitars arkitektur överstiger inte talintervallet int32_t, det vill säga från -2 147 483 648 till 2 147 483 647). Siffrorna kan ställas in i decimala, åttakantiga och hexadecimala talsystem. Omfånget av materialnummer (Float) beror också på plattformen (för en 32-bitars arkitektur låter området dig arbeta med tal från ± 1,7 × 10 −308 till ± 1,7 × 10 +308 ).

PHP ger utvecklare en logisk typ (Bool), som bara kan ta två värden true("sanning") och false("lögner"). Vid konvertering till en logisk typ anses talet 0, tom rad, noll på raden "0" nulloch en tom array vara lika false. Alla andra värden konverteras automatiskt till true.

Specialtypen null är för variabler utan ett definierat värde. Det enda värdet av denna typ är en bokstavlig null. Null-typen accepterar oinitierade variabler, variabler initierade med en konstant null, samt variabler som raderas med hjälp av unset().

Länkar till externa resurser är av typen resurs. Att variera denna typ är som regel en deskriptor som tillåter externa objekt, såsom filer, dynamiska bilder, vilket resulterar i databastabeller, etc. När språket utvecklas förfinas standardbiblioteket gradvis och resurser ersätts av objekt. Således är det planerat att helt bli av med denna typ.

Arrayer (array) stöder numeriska och strängtangenter och är heterogena . Matriser kan innehålla värden av vilken typ som helst, inklusive andra matriser. Ordningen på elementen och deras nycklar bevaras. Det är inte helt korrekt att kalla php-arrays-arrayer, i själva verket är det med största sannolikhet en ordnad hash . Oväntat beteende är möjligt när du använder en slinga formed en räknare istället för foreach. Så, till exempel, när man sorterar en array med numeriska index efter funktioner från standardbiblioteket, sorteras nycklarna också.

Skriver

Språket tillåter typifiering av argument, de returnerade värdena för funktioner och metoder för klasser , såväl som, från och med version 7.4, typifiering av klassfält . Införandet av ett strikt läge kopplar bort implicita transformationer av typer i dessa kodområden, vilket för språkets beteende till språk med strikt typificering .

Typer,,, inteller är stringtillåtna definitioner av typen av argument float, fältfält eller returnerat värde. Det är också tillåtet att använda namnen på klasser eller gränssnitt för att bestämma en specifik implementering. Användning för att bestämma typen är inte tillåten, och indikeringen är möjlig med begränsningar: endast inom ramen för att bestämma typen-shum , till exempel (eller ). boolarrayobjectresourcenullint|null?int

Modern PHP implementerar grundläggande stöd för algebraiska datatyper och tillåter både konjunktion och disjunktion att användas när en typ definieras. Språket tillåter inte typalias , men det tillhandahåller flera inbyggda implementeringar som kallas "pseudotyper" inom PHP. En liknande term i språket tillämpas på vilken typdefinition som helst som inte är oberoende, tillämplig på ett värde, men som endast implementeras som en typkontrollinstruktion i Zend VM.

Pseudotyper inkluderar:

  • Blandat vilken typ som helst
  • iterable (array eller något objekt som implementerar iteratorgränssnittet ).
  • anropsbar ( anonym funktion , sträng eller array) [40]
  • void returtyp betyder ingen retur från funktionen
  • returnera aldrig typ som indikerar att applikationen är avbruten
  • self är en typ som hänvisar till den klass inom vilken denna typ användes (du kan använda aliaset förälder eller statisk, men det senare är endast som en retur)
  • falsk typ (bool-del), som endast kan användas som ett av elementen i den så kallade unionstypen , t.ex.int|false

Förutom typkontroller kan inbyggda "pseudotyper" implementera ytterligare kontrolllogik. Till exempel kan callableen typ representeras:

  • en sträng som måste innehålla namnet på funktionen;
  • en array där noll- och förstaelementen är strängar (tolkas som namnet på en statisk klassfunktion);
  • en array där nollelementet är ett objekt och det första är en sträng (tolkas som en metod på objektet).

Funktioner

PHP stöder både deklarationen av namngivna funktioner och förstklassiga anonyma funktioner , till exempel:

// Deklaration av en namngiven funktion funktion get_hello_world () : string { return 'Hello World!' ; } // Anonym funktionsdeklaration $getHelloWorld = funktion () : string { return 'Hello World!' ; }; // Kort syntax $getHelloWorld = fn () : string => 'Hej världen!' ;

Det är värt att notera att när det gäller anonyma funktioner är skillnaden inte bara i visuella skillnader, utan även i sättet som externa kontextvariabler fångas upp. Varje "kort" form av notation är en stängning , medan en lång notation för att implementera en stängning kräver explicit specificering av variabler inuti operatören usefrån ett externt sammanhang för att fånga dem:

$variable = 'Hej världen!' ; // Använda satsen use function () use ( $variable ) : string { return $variable ; }; // Alternativ, med kort fn () syntax : string => $variabel ;

Åtkomst till variabler och funktioner

Variabler nås med hjälp av symbolen $följt av variabelnamnet. Denna konstruktion kan också användas för att skapa dynamiska variabler och funktioner. [41] Till exempel:

$ A = 'jag är en' ; // Skriv värde till $a echo $a ; // Utdatavariabel $a $ b = 'a' ; echo $ b ; // Visa variabel $a (extra $ före variabel $b) echo $ { 'a' }; // Utdatavariabel $a Funktionsnamn (); // Anrop funktion function_name $c = 'function_name' ; $c (); //Anrop funktionen funktionsnamn $d = 'Klassnamn' ; $obj = nytt klassnamn ; // Skapa ett objekt av klassen Klassnamn $obj = new $d (); // Skapa ett objekt av klassen Klassnamn $obj -> b ; // Åtkomst till egenskap b för objektet $obj -> c (); // Anropa objektets c()-metod $obj -> $b ; // Åtkomst till a-egenskapen för objektet eftersom $b = 'a' $obj -> $c (); // Utmaning av objektet Function_name () eftersom $ C = 'Function_name'

I PHP echo, printäven om de ser ut som funktioner, är den förra en [42] operator och den senare är ett uttryck (det vill säga den printreturnerar ett värde, till skillnad från echo). Du kan utelämna parenteserna när du använder dem.

Superglobals

Superglobala arrayer i PHP är fördefinierade arrayer som har en global räckvidd utan att använda direktivet .  De flesta av dessa arrayer innehåller indata från användarens begäran ( GET - begäranparametrar, formulärfält när de skickas med POST- metoden , cookies , etc.). global

Alla superglobals, förutom $GLOBALSoch $_REQUEST, har föråldrade motsvarigheter med långa namn som är tillgängliga upp till version 5.3. x (eftersom 5.4.0 har tagits bort). Således är anropen av $_GET['year']och $HTTP_GET_VARS['year']identiska (förutom omfattningen: arrayer med "långa" namn är inte superglobala).

$GLOBALS En uppsättning av alla globala variabler (inklusive användarna). $_SERVER(analog för föråldrad - $HTTP_SERVER_VARS) Innehåller miljövariabler som operativsystemet skickar till servern. $_ENV(mun $HTTP_ENV_VARS) Aktuella miljövariabler _ _  _ _ Deras uppsättning är specifik för plattformen där manuset utförs. $_GET(mun $HTTP_GET_VARS) Innehåller parametrarna för GET-begäran som skickas i URI:n efter frågetecknet " ?". $_POST(mun $HTTP_POST_VARS) Associativ uppsättning av värdena i HTML-formulärfälten vid sändning med POST. Elementindex motsvarar värdet av en egenskap hos nameobjekten (knappar, formulär, alternativknappar, kryssrutor, etc.) i HTML-formuläret. $_FILES(mun $HTTP_POST_FILES) Associativ array med information om postfilerna som skickas av metoden. Varje element har ett index som är identiskt med värdet för "name"-attributet på formuläret, och är i sin tur också en array med följande element:
  • ['name'] är det ursprungliga namnet på filen på användarens dator.
  • ['type'] -Filen som anges av användarens agent -filen för filen. PHP kontrollerar inte det, och därför finns det ingen garanti för att den angivna typen är korrekt.
  • ['size'] — filstorlek i byte.
  • ['tmp_name'] - Hela vägen till filen i den tillfälliga mappen. Filen måste flyttas därifrån med en funktion move_uploaded_file. De nedladdade filerna från den temporära PHP-mappen raderar den självständigt.
  • ['error'] - felkod. Om filen laddades framgångsrikt kommer detta element att vara lika med 0 ( UPLOAD_ERR_OK).
$_COOKIE(mun $HTTP_COOKIE_VARS) Associativ array med kockarna som överförts av användaragenten . $_REQUEST Innehåller element av arrayer $_GET, $_POST. $_COOKIEFrån och med PHP 4.1 innehåller den $_FILES. $_SESSION(mun $HTTP_SESSION_VARS) Innehåller sessionsdata.

Objektorienterad programmering

Nyckelordet classvar reserverat i den tredje versionen av språket. I den fjärde versionen blev det möjligt att skapa klasser och objekt utifrån dem. OOP-principerna stöddes dock endast delvis, till exempel var alla medlemmar (variabler och metoder) offentliga. Dessutom var skapandet av föremål en dyr operation och fungerade långsamt.

Från och med den femte versionen av PHP har OOP fullt stöd . Arbetet med klasser har optimerats och nu fungerar sådan kod ganska snabbt.

En klass i PHP deklareras med class. Klassmetoder och egenskaper kan vara offentliga ( public, standard), skyddade ( protected) och dolda ( private). PHP stöder alla tre stora OOP-mekanismerna - inkapsling , subtyp polymorfism och arv (förälderklassen anges med ett nyckelord extendsefter klassnamnet). Gränssnitt stöds (mappade med implements). Det är tillåtet att deklarera slutgiltiga , abstrakta metoder och klasser. Flera arv av klasser stöds inte, men en klass kan implementera flera gränssnitt. Nyckelordet används för att komma åt metoder för den överordnade klassen parent.

Sedan version 5.4.0 kan multipelt arv implementeras med hjälp av egenskapsmekanismen .  Funktioner liknar mixins , förutom att de inte kan instansieras direkt . Kodåteranvändning ligger i användningen av funktionskod i flera klasser. Det är tillåtet att använda flera funktioner i en klass. Funktionsmekanismen har ett sätt att lösa namnkonflikter. När programmet körs kommer funktionens kod att "kompileras" till koden för dess innehållande klass.  

Klasser i PHP har ett antal "magiska" metoder ( eng.  magic methods ), som börjar med två understreck - en konstruktor ( __construct(), i versioner före 5.0 var konstruktorn en metod med samma namn som klassen) och en destruktor ( __destruct()), såväl som läs- ( __get()) och skrivmetoder ( __set()), vikning ( __sleep()) och expandering ( __wakeup()), kloning ( __clone()), etc. Dessa metoder är ganska flexibla verktyg: genom att omdefiniera dem kan du uppnå en betydande förändring i beteendet hos objekt.

Alla medlemsfunktioner är implementerade som virtuella och därför är alla metoder.

Förekomster av en klass skapas med nyckelordet new, egenskaperna och metoderna för ett objekt nås med operatorn ->. För att komma åt klassmedlemmar från dess metoder används en variabel $this.

klass C1 utökar C2 implementerar I1 , I2 { privat $a ; skyddad $b ; offentlig funktion __construct ( $a , $b ) { parent :: __construct ( $a , $b ); $this -> a = $a ; $this -> b = $b ; } public function plus () { return $this -> a + $this -> b ; } /* ............... */ } $d = ny C1 ( 1 , 2 ); echo $d -> plus (); // 3

Sedan PHP 5 skickas objekt genom referens:

klass A { public $color = 'röd' ; } $a = newA ( ); echo $a -> färg ; // röd $b = $a ; $b -> color = 'blå' ; echo $a -> färg ; // blå

"Paamayim Nekudotayim" ( hebreiska : פעמיים נקודתיים) eller helt enkelt "dubbelt kolon". Med denna token kan programmeraren komma åt konstanter, statiska eller överbelastade egenskaper eller metoder för klassen. När man hänvisar till dessa element utanför klassen måste programmeraren använda klassnamnet. "Paamayim Nekudotayim" kan vid första anblicken tyckas vara en konstig fras för ett dubbelt kolon. Men under skapandet av Zend Engine version 0.5 (som ingick i PHP3), valde Andi och Zeev denna notation [43] . "Paamayim Nekudotayim" betyder egentligen "dubbel kolon" (bokstavligen: "dubbel kolon") på hebreiska. Denna notation har aldrig ändrats under utvecklingen av PHP [44] .

class MyClass { public const CONST_VALUE = 'Konstant värde' ; } // Använder :: utanför klassdeklarationen echo MyClass :: CONST_VALUE ;

Funktioner hos tolken

PHP-skript bearbetas vanligtvis av tolken i en ordning som säkerställer att den utvecklade applikationen är plattformsoberoende :

  1. källkodslexikal analys och tokengenerering ,
  2. syntaktisk analys av mottagna lexem,
  3. generera en opcode för en virtuell maskin (en sorts bytekod ),
  4. optimering (till exempel DCE ),
  5. exekvering av opcoden av tolken (utan att skapa en körbar fil ), eller JIT-kompilering av resultatet med efterföljande exekvering (en speciell flagga krävs i tolkinställningarna för att aktivera JIT).

Tidigare, för att öka applikationernas prestanda, var det möjligt att använda speciell programvara , de så kallade acceleratorerna . Principen för deras funktion är att cache en gång genererad bytekod i minnet och/eller på disken , sålunda är steg 1-3 uteslutna från applikationsprocessen, vilket i allmänhet leder till en betydande snabbhet. Sedan version 5.5 har en av acceleratorerna, opcache , byggts in i kärnan, så tredjepartslösningar är inte längre populära.

En viktig funktion är att utvecklaren inte behöver ta hand om distribution och frigöring av minne. PHP-kärnan implementerar faciliteter för automatisk minneshantering; Allt tilldelat minne returneras till systemet efter att skriptet har slutförts [45] .

Tillägg

Tolken består av en kärna och anslutna moduler , "extensions" , som är dynamiska bibliotek . Tillägg låter dig komplettera språkets grundläggande kapacitet, vilket ger möjligheter att arbeta med databaser , sockets , dynamisk grafik , kryptografiska bibliotek, PDF -format dokument och liknande. Vem som helst kan utveckla sin egen expansion och koppla ihop den. Det finns ett stort antal tillägg, både standard och skapade av tredjepartsföretag och entusiaster, men bara ett par dussin väl beprövade sådana ingår i standardutbudet. Många tillägg finns tillgängliga i PECL- förvaret .

Från och med version 7.4.0 lades FFI-stöd till PHP, vilket avsevärt förenklade interaktion med bibliotek skrivna på vilket annat språk som helst (inklusive API:et som tillhandahålls av operativsystemet). Denna nya funktionalitet gav i sin tur ett alternativ till skrivtillägg. Med FFI kan du alltså skriva koden i PHP-språket och interagera med alla bibliotek i systemet som tillhandahåller cdecl, fastcalleller stdcall Abi .

Inställningar

PHP-tolken har en speciell konfigurationsfil  - php.inisom innehåller många inställningar, vars förändring påverkar tolkens beteende [46] . Det är möjligt att inaktivera användningen av ett antal funktioner, ändra begränsningarna för RAM-minnet som används av skriptet, exekveringstiden, volymen av uppladdade filer, konfigurera feljournalisering, arbeta med sessioner och e-posttjänster, ansluta ytterligare tillägg och mycket mer. Det är möjligt att krossa en stor konfigurationsfil på delar. Till exempel är bruket att göra tillägg till separata filer utbredd. Tolkens parametrar kan omdefinieras i HTTP-serverns konfigurationsfiler (till exempel .htaccessi Apache ) eller i själva skriptet under exekveringen med kommandot ini_set[47] .

Interpreter startup modes (SAPI)

SAPI är ett externt abstraktionslager utformat för att bädda in en tolk i andra applikationer och ansvarar för dess funktion (starta, stoppa, skicka skript för exekvering, tillgång till extern data). Det finns flera huvudsakliga SAPI:er som definierar hur PHP kan köras och användas:

  1. Som en modul till webbservern (till exempel för Apache -modulen mod_php). I det här fallet körs PHP-tolken i miljön för webbserverprocessen. Webbservern hanterar antalet PHP-processer som körs och talar om för dem vilka skript som ska köras.
  2. CGI SAPI. Att använda CGI innebär att starta en ny process för att behandla varje begäran. För att köra ett PHP-skript kör webbservern ./php-cgi /path/to/script.php. Själva principen för sådan användning innebär att PHP-tolken endast kör ett skript, varefter det avslutar sitt arbete. Kostnaden för att starta en tolkprocess och initiera den är mycket ofta jämförbar eller till och med högre än kostnaden för att köra ett PHP-skript. För att lösa detta problem introducerades FastCGI-läget i CGI SAPI. I det här läget körs PHP-tolken som en oberoende server som bearbetar inkommande förfrågningar för att exekvera PHP-skript med hjälp av FastCGI-protokollet, vilket gör att den kan arbeta med vilken webbserver som helst som stöder detta protokoll.
  3. FPM SAPI, känd som php-fpm, är en annan implementering av FastCGI-protokollet. Ursprungligen skapad av Andrey Nigmatulin som en separat patch för användning på Badoo sociala nätverk. Denna implementering löste ett antal problem som förhindrade användningen av CGI/FastCGI SAPI. I synnerhet blev det möjligt att starta om poolen av PHP-tolkar utan att förlora förfrågningar, köra flera pooler under olika användare, nödstart av tolkar vid problem med dem, och några andra trevliga tillägg. Därefter arbetade flera personer med patchen, ett läge för att dynamiskt hantera antalet körande PHP-processer lades till (liknande att hantera antalet processer i Apache-webbservern), och från och med PHP 5.3.3 ingick php-fpm i PHP som en separat SAPI.
  4. Som ett kommandoradsskript (CLI SAPI), vilket är en körbar fil som anropas av användaren från kommandoraden ; skriptet körs i den anropande användarens miljö. I det här fallet är det möjligt att använda PHP för att skapa klient GUI- applikationer [48] och lösa administrativa uppgifter i UNIX , Linux , Microsoft Windows , Mac OS X och AmigaOS operativsystem . Men i denna egenskap blev han inte populär och gav handflatan till Perl , Python och VBScript .

Från och med PHP 5.4.0 har SAPI CLI förmågan att köra PHP som en fristående HTTP-server. Det här läget är dock enbart för utveckling, eftersom det bara kör en tolkprocess och exekverar alla frågor på ett rent sekventiellt sätt.

Påskägg

PHP har några påskägg (skämt). Att skicka speciella GET-parametrar till valfritt php-skript resulterar i utdata av olika bilder.

Till exempel:

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

när du anger detta värde i webbläsarens adressfält kan du se olika bilder, beroende på tolkens version:

  1. foto av Thies Arntzen (version 4.1.2, 4.2.2)
  2. foto av en tax (ägare Stig Bakken ) (versionerna 4.3.2, 4.3.3, 4.3.8 - 4.3.10)
  3. svart terrierfoto (ägare Zeev Suraski ) (versionerna 4.3.11, 4.4.0 - 4.4.4, 5.1.0, 5.1.2)
  4. foto av en kanin (version 4.3.1, 5.0.0, 5.0.3)
  5. förvrängd PHP-logotyp (version 5.1.3 - 5.2.13) [49]
  6. foto av en leksaksblå elefant med PHP-inskription (sedan version 5.3.0) [49]

Följande två värden låter dig se standard PHP- och ZEND-logotypen, respektive [49] :

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

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

Dessa värden kan också erhållas direkt i PHP-skriptet med hjälp av funktionerna php_logo_guidoch zend_logo_guidför Zend-logotypen.

Det finns också ett speciellt värde för att visa en lista över alla PHP (4,5) [49] författare :

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

Alternativa implementeringar

På grund av PHP-språkets popularitet och önskan att öka hastigheten på webbapplikationer baserade på det , har flera alternativa kompilatorer skapats som ligger nära PHP-språket. Så i februari 2010 öppnade Facebook [ 50] [51] sin PHP-kompilator - HipHop (HPHP, Hyper-PHP) som genererar C++-kod , följt av kompilering till maskinkod med gcc . I juli 2013 tillkännagav det ryska företaget VKontakte en liknande produkt, KPHP [52] .

Tabellen ger en lista över för närvarande existerande alternativa implementeringar.

namn PHP-version (ungefär) Licens Sammanställningsresultat
PHP 7.4 GPL C++ , ursprunglig kod
hiphop 5.4 PHP-licens C++ , ursprunglig kod
Roadsend PHP 5.3 GPL / LGPL C , maskinkod
Phalanger 5.5 Ms SS-PL [53] ( Delad källa ) Microsoft IL
Quercus (del av Resin webbserver ) 5.2 GPL eller kommersiell JVM
PHC 5.2 BSDL C , maskinkod
Pipp [54] 5.3 Artistic License och GNU GPL Papegoja
JPHP [55] 7.1 (delvis 7.2, 7.3 och 7.4) [56] Apache 2.0 JVM
PHP 5.4 MIT PHP
PH7 5.5 Egen (Symisc Public License) C , maskinkod
HippyVM 5.6 MIT RPython/PyPy

En jämförande analys av vissa kompilatorer finns på phpclasses.org [57] .

Licensiering

Ekosystem

Ramar

Innehållshanteringssystem

PHP är det mest populära språket för att utveckla innehållshanteringssystem (CMS).

Verktyg för att utveckla PHP-applikationer

namn Licens
Codelobster Gratisprogram
Komodo Mozilla tri-licens ( MPL / LGPL / GPL ) [58]
phpstorm Proprietär programvara
PHP utvecklingsverktyg Eclipse Public License
zend studio shareware
Aptana Studio GNU GPL
phpDesigner shareware
PHP Expert Editor Shareware [59]
NetBeansIDE CDDL
RadPHP XE rättegång
NuSphere rättegång
KDevelop [60] GNU GPL
Microsoft Web Matrix Gratisprogram
Anteckningar++ GNU GPL
Sublim text Proprietär programvara
VS.Php för Visual Studio Proprietär programvara
PHP-verktyg för Visual Studio rättegång
DevelNext MPL-2.0
jRedigera GNU GPL -2.0

PHP standardrekommendationer

PHP Standard Recommendation ( förkortning PSR  [ ) är en PHP-specifikation som är utvecklad, accepterad och publicerad av en grupp auktoritativa PHP-projekt inklusive CakePHP, Composer , Joomla, PEAR , Phalcon, phpDocumentor , TYPO3, Yii framework [61] . Specifikationen fungerar som en standardisering av PHP-programmeringskoncept och är baserad på verklig erfarenhet såväl som forskning och experiment [62] . Syftet med rekommendationerna är att säkerställa kompatibiliteten för webbapplikationskomponenter utvecklade av olika utvecklare.

Kritik

Förespråkare av PHP-språket nämner den utbredda användningen, efterfrågan på PHP-utvecklare på arbetsmarknaden och enkel inlärning som dess främsta fördelar. Fördelarna med språket inkluderar dess ganska snabba utveckling.

Brist på stöd för multibyte-kodningar i språkkärnan

Stöd för strängar med multibyte-kodningar (som UTF-8 ) implementeras genom separata tillägg mbstringoch iconv, det finns inget stöd på kärnnivån, men eftersom PHP 4.2.0 är det möjligt att åsidosätta standardfunktionerna för att arbeta med strängar, ersätta dem med analoger från mbstring. Stöd för multibyte-kodningar i alla strängfunktioner har funnits sedan version 5.4.0 (mars 2012).

Brist på stöd för flera trådar

Språket ger inte möjlighet att skapa flertrådade applikationer och det finns inget stöd för synkroniserad åtkomst till resurser, men det är implementerat med PCNTL-tillägget [63] (från den engelska  process control ), men det är inte lämpligt för att lösa specifika problem.

Även om det är möjligt att installera pthreads-tillägget för "ärliga" trådar, måste tolken för detta kompileras med trådsäkerhetsflaggan, och själva tillägget har förkastats till förmån för parallell (från samma författare).

Ett modernare alternativ är att använda Swoole-förlängningen.

Se även

Anteckningar

  1. 1 2 3 4 http://php.net/manual/en/history.php.php
  2. 1 2 https://www.technotification.com/2018/04/best-php-frameworks.html
  3. 1 2 http://lerdorf.com/bio/  _
  4. Version 8.1.12 - 2022.
  5. Google-grupper
  6. PHP: Historia om PHP - Manual
  7. https://fileinfo.com/extension/php
  8. 1 2 3 PHP: Förord ​​- Manual
  9. Rasmus Lerdorf | PHP på hormoner - 2013.
  10. http://php.net/license/
  11. 1 2 3 PHP: History of PHP - Manual . Tillträdesdatum: 18 januari 2009. Arkiverad från originalet 1 februari 2009.
  12. ↑ PHP : Förord ​​- Manual  . Arkiverad från originalet den 21 augusti 2011.
  13. 1 2 TIOBE-programvara: Tiobe Index . Hämtad 2 november 2009. Arkiverad från originalet 22 juni 2013.
  14. Historia om PHP och relaterade  projekt . Arkiverad från originalet den 21 augusti 2011.
  15. PHP: Funktioner - Manual (21 juni 2009). Hämtad 13 november 2009. Arkiverad från originalet 21 augusti 2011.
  16. Rasmus Lerdorf. Jag undrar varför folk fortsätter att skriva att PHP någonsin skrevs i Perl. Det var det aldrig. #php  (engelska) . @rasmus (20 juli 2012). Hämtad 8 januari 2019. Arkiverad från originalet 3 januari 2018.
  17. Savelyeva N. Föreläsning 1: Introduktion till PHP/PHP-programmeringsspråk. Arkiverad 22 januari 2015 på Wayback Machine Intuit, 2005. ISBN 978-5-9556-0026-0
  18. Antal funktioner som har skrivits om med Unicode-stöd . Datum för åtkomst: 19 januari 2007. Arkiverad från originalet 19 januari 2007.
  19. News.txt-filen från PHP 6-distributionen (nedlänk) . Tillträdesdatum: 19 januari 2007. Arkiverad från originalet den 12 december 2008. 
  20. PHP 6 nuvarande klar och eftersläpning . Hämtad 7 april 2008. Arkiverad från originalet 18 april 2008.
  21. Fullständig lista över förändringar som planeras till december 2005 . Hämtad 12 augusti 2006. Arkiverad från originalet 12 augusti 2006.
  22. How PHP6 Died Arkiverad 13 oktober 2011 på Wayback Machine // amiro.ru
  23. PHP RFC: Namn på nästa utgåva av PHP . Hämtad 28 mars 2015. Arkiverad från originalet 3 juli 2017.
  24. PHP RFC: PHP 7.0 tidslinje . Datum för åtkomst: 28 mars 2015. Arkiverad från originalet 17 mars 2015.
  25. ↑ PHP 7 coolaste funktioner : rymdskepp, typtips, 2X hastighet  . www.zend.com. Hämtad 6 juli 2017. Arkiverad från originalet 8 juli 2017.
  26. PHP: Nyhetsarkiv - 2015 . Datum för åtkomst: 12 december 2015. Arkiverad från originalet 12 december 2015.
  27. PHP: rfc:phpng . php.net . Datum för åtkomst: 16 december 2014. Arkiverad från originalet den 19 oktober 2014.
  28. RFC: Returtyper . php.net . Hämtad 28 mars 2015. Arkiverad från originalet 17 juli 2017.
  29. RFC: Skalär typdeklarationer . php.net . Hämtad 28 mars 2015. Arkiverad från originalet 7 juli 2017.
  30. PHP: Nya funktioner - Manual . Hämtad 2 maj 2020. Arkiverad från originalet 2 maj 2020.
  31. PHP: Nyhetsarkiv - 2020 . Hämtad 29 november 2020. Arkiverad från originalet 13 oktober 2020.
  32. Vad är nytt i PHP 8 - stitcher.io . Hämtad 3 maj 2020. Arkiverad från originalet 19 maj 2020.
  33. PHP: rfc: union_types_v2 . Hämtad 3 maj 2020. Arkiverad från originalet 1 april 2020.
  34. PHP:rfc:jit . Hämtad 3 maj 2020. Arkiverad från originalet 18 maj 2020.
  35. Dale Hirt - Microsoft Support för PHP på Windows Arkiverad 16 juli 2020 på Wayback Machine 
  36. Windows 10 kommer att sluta stödja PHP Arkiverad 16 juli 2020 på Wayback Machine  (ryska)
  37. Microsoft kommer inte att stödja PHP 8.0 för Windows . Hämtad 16 juli 2020. Arkiverad från originalet 17 juli 2020.
  38. Bygga  PHP . PHP Internals bok. Hämtad 1 mars 2022. Arkiverad från originalet 8 maj 2021.
  39. ↑ RE2C : En lexergenerator baserad på lookahead-TDFA  . Programvarueffekter. Hämtad 1 mars 2022. Arkiverad från originalet 27 januari 2022.
  40. PHP: Callback Functions (Callback Functions) - Manual . secure.php.net. Hämtad 27 februari 2019. Arkiverad från originalet 28 februari 2019.
  41. PHP: Variable variables - Manual . Hämtad 17 december 2008. Arkiverad från originalet 11 maj 2008.
  42. PHP: echo - Manual . Tillträdesdatum: 14 januari 2010. Arkiverad från originalet den 24 februari 2009.
  43. Uppenbarligen lånat från språket C++ , där det är den binära formen för att specificera omfattningen , en konstruktion med den, ett kvalificerat namn , i detta fall en konstant.
  44. http://php.net/manual/en . Hämtad 25 mars 2010. Arkiverad från originalet 12 juni 2010.
  45. PHP: Grundläggande minneshantering - Manual (13 november 2009). Hämtad 17 november 2009. Arkiverad från originalet 21 augusti 2011.
  46. PHP: php.ini-direktiv - Manual  ( 6 november 2009). Hämtad 13 november 2009. Arkiverad från originalet 21 augusti 2011.
  47. PHP: Lista över php.ini-direktiv - Manual  ( 6 november 2009). Hämtad 13 november 2009. Arkiverad från originalet 21 augusti 2011.
  48. PHP: Använda PHP på kommandoraden - Manual (21 juni 2009). Hämtad 13 november 2009. Arkiverad från originalet 21 augusti 2011.
  49. 1 2 3 4 PHP Påskägg  . Hämtad 16 november 2009. Arkiverad från originalet 21 augusti 2011.
  50. HipHop för PHP: Flytta snabbt
  51. Facebook har öppnat koden för en högpresterande PHP-översättare . Hämtad 3 februari 2010. Arkiverad från originalet 6 februari 2010.
  52. Pavel Durov och kollegor utvecklade en förbättrad version av PHP . Hämtad 2 januari 2014. Arkiverad från originalet 12 december 2013.
  53. Licenstext  _
  54. Projektet är i ett experimentellt skede
  55. Projektet är i experimentstadiet. Senaste version 1.3.1 (från och med juli 2020)
  56. jphp-group/  jphp . GitHub. Hämtad 18 november 2018. Arkiverad från originalet 5 oktober 2018.
  57. PHP-kompilatorprestanda . Hämtad 1 mars 2010. Arkiverad från originalet 26 februari 2010.
  58. Komodo IDE är en professionell utvecklingsmiljö för Perl, Python, Tcl | ActiveState (nedlänk) . Hämtad 22 november 2011. Arkiverad från originalet 20 december 2008. 
  59. Gratis registrering för exUSSR-medborgare tillhandahålls
  60. PHP-stöd för KDevelop 4 (och så småningom Quanta+) | Millian Wolff . Datum för åtkomst: 11 december 2010. Arkiverad från originalet den 2 januari 2011.
  61. Personal  . _ Hämtad 1 augusti 2020. Arkiverad från originalet 2 juni 2020.
  62. ↑ Uppdrag och struktur  . Hämtad 1 augusti 2020. Arkiverad från originalet 1 augusti 2020.
  63. PCNTL . Datum för åtkomst: 23 januari 2012. Arkiverad från originalet 17 januari 2012.

Litteratur

  • Matt Zandstra. PHP: Objects, Patterns and Practices = PHP Objects, Patterns and Practice, tredje upplagan. — 3:e upplagan. - M . : " Williams ", 2010. - S. 560. - ISBN 978-5-8459-1689-1 .
  • Christian Dari, Emilian Balanescu. PHP och MySQL: Bygga en onlinebutik = Börja med PHP och MySQL e-handel: från nybörjare till proffs. - M . : " Williams ", 2010. - ISBN 978-5-8459-1602-0 .
  • Jason Langstorf. PHP och jQuery för proffs = Pro PHP och jQuery. - M . : " Williams ", 2010. - S. 352. - ISBN 978-5-8459-1693-8 .
  • Quentin Zervas. Web 2.0: Bygga applikationer med PHP = Praktiska Web 2.0 applikationer med PHP. - M . : " Williams ", 2009. - S. 544. - ISBN 978-5-8459-1590-0 .
  • Kuznetsov Maxim, Simdyanov Igor. PHP 5/6. - St Petersburg. : " BHV-Petersburg ", 2009. - S. 1024. - ISBN 978-5-9775-0304-4 .
  • Kuznetsov Maxim, Simdyanov Igor. Objektorienterad programmering i PHP. - St Petersburg. : " BHV-Petersburg ", 2007. - S. 608. - ISBN 978-5-9775-0142-2 .
  • Ed Lecky-Thompson, Alec Kove, Stephen Nowitzki, Hyao Eyde-Goodman. PHP 5 för proffs = Professional PHP 5. - M . : " Dialectics ", 2006. - S. 608. - ISBN 0-7645-7282-2 .
  • Kuznetsov Maxim, Simdyanov Igor. PHP handledning 5/6. - 3:e uppl., reviderad. och ytterligare - St Petersburg. : " BHV-Petersburg ", 2009. - S. 672. - ISBN 978-5-9775-0409-6 .
  • Kuznetsov Maxim, Simdyanov Igor. PHP. Bruket att skapa webbplatser. - 2:a uppl. revideras och ytterligare - St Petersburg. : " BHV-Petersburg ", 2008. - S. 1264. - ISBN 978-5-9775-0203-0 .
  • Kuznetsov Maxim, Simdyanov Igor. PHP-pussel för hackaren. - 2:a uppl. revideras och ytterligare - St Petersburg. : " BHV-Petersburg ", 2008. - S. 544. - ISBN 978-5-9775-0204-7 .
  • Kuznetsov Maxim, Simdyanov Igor. PHP med exempel. - 2:a uppl. revideras och ytterligare - St Petersburg. : " BHV-Petersburg ", 2011. - S. 400. - ISBN 978-5-9775-0445-4 .
  • Luke Welling, Laura Thomson. Utveckla webbapplikationer med PHP och MySQL. - 5:e upplagan - St Petersburg. : " Dialektik ", 2019. - S. 768. - ISBN 978-5-9908911-9-7 .
  • Luke Welling, Laura Thomson. PHP & MySQL webbutveckling. — femte upplagan. - " Addison-Wesley ", 2017. - P. 687. - ISBN 978-0-321-83389-1 .
  • Zandstra M. PHP. Objekt, mönster och programmeringsteknik. - 4:e upplagan - St Petersburg. : " Dialektik ", 2015. - S. 576. - ISBN 978-5-8459-1922-9 .
  • Zandstra M. PHP. Objekt, mönster och programmeringsteknik. - 5:e upplagan - St Petersburg. : " Dialektik ", 2019. - S. 736. - ISBN 978-5-907144-54-5 .
  • Zandstra M. PHP-objekt, mönster och övningar . — 5:e upplagan. - " Apress ", 2016. - S.  583 . — ISBN 978-1-4842-1995-9 .
  • Nixon R. Bygger dynamiska webbplatser med PHP, MySQL, JavaScript, CSS och HTML5. - 4:e upplagan - St Petersburg. : " O'Reilly Bestsellers ", 2016. - S. 768. - ISBN 978-5-496-02146-3 .
  • Ulman, Larry. PHP och MySQL: skapa onlinebutiker. - 2:a upplagan - St Petersburg. , 2015. - S. 544. - ISBN 978-5-8459-1939-7 .
  • Kuznetsov M., Simdyanov I. Självinstruktionsmanual PHP 7. - 2:a upplagan - St Petersburg. , 2018. - S. 448. - ISBN 978-5-9775-3817-6 .

Länkar