PHP

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. október 2-án felülvizsgált verziótól ; az ellenőrzések 7 szerkesztést igényelnek .
PHP
Nyelvóra több paradigma , objektumorientált , imperatívusz
Megjelent 1995. június 8. [5] [6]
Szerző Rasmus Lerdorf [3]
Fejlesztő Rasmus Lerdorf [1] , Andy Gutmans [1] , PHP Group [d] , Zend Technologies [2] és Zeev Sourasky
Fájlkiterjesztés _ .php[7]
Kiadás
Befolyásolva C++ , Perl [8] , C [8] , Java [8] , Tcl [9] , HTML és JavaScript
Engedély PHP licenc [10]
Weboldal php.net
OS Unix-szerű operációs rendszer és Microsoft Windows
 Médiafájlok a Wikimedia Commons oldalon

PHP ( /pi:.eɪtʃ.pi:/ angol  PHP: Hypertext Preprocessor  - "PHP: hypertext preprocessor "; eredetileg PHP / FI (Personal Home Page / Form Interpreter), később Személyes kezdőlap eszközöknek [11]  - " Eszközök személyes weboldalak létrehozásához") egy általános célú C-szerű szkriptnyelv [12] , amelyet intenzíven használnak webes alkalmazások fejlesztésére. Jelenleg a tárhelyszolgáltatók túlnyomó többsége támogatja, és ez az egyik vezető nyelv a dinamikus webhelyek létrehozásához [13] .

A nyelvet és annak tolmácsát ( Zend Engine ) egy nyitott forráskódú projekt [14] részeként fejleszti lelkesek egy csoportja . A projektet saját licence alapján terjesztik , ami nem kompatibilis a GNU GPL -lel .

Hatókör

A webprogramozás területén, különösen a szerver oldalon, a PHP az egyik legnépszerűbb szkriptnyelv (a JSP , Perl és az ASP.NET -ben használt nyelvek mellett ).

A webhelyek készítése terén a népszerűséget a beépített eszközök és a webalkalmazások fejlesztéséhez szükséges kiegészítő modulok nagy készletének jelenléte határozza meg [15] . A főbbek a következők:

A 2010-es évektől fejlesztők százezrei használták; A keresőmotorok adatain alapuló TIOBE rangsor szerint 2016 májusában a PHP a 6. helyen állt a programozási nyelvek között [13] .

Tartalmazza a LAMP - a webhelyek létrehozására és tárolására  szolgáló közös szoftverkészlet ( Linux , Apache , MySQL , PHP), valamint a LEMP - egy ugyanolyan gyakori szoftverkészlet ( Linux , Nginx , MySql , PHP).

A PHP-t használó webhelyek közé tartozik a Facebook , a Wikipedia , a Yahoo! , Baidu .

További funkciók

A nyelv automatikusan támogatja a HTTP Cookie -kat a Netscape szabványoknak megfelelően. Ez lehetővé teszi kis adatszegmensek beállítását és olvasását az ügyféloldalon. A sütikkel való munka munkamenetek (munkamenetek) útján történik. A munkameneteknek van lejárati dátuma (lejárata után az adatok törlődnek), a munkamenetekben különféle típusú adatok tárolhatók és szerkeszthetők, beleértve a szerializáltakat is - a szerializáláson (a folyamat automatikusan megtörténik), PHP objektumok.

GUI alkalmazások létrehozása

A PHP nem az asztali alkalmazások létrehozására koncentrál, de szükség van interfészek létrehozására a szerverek beállításához, a folyamatos végrehajtáshoz, a szkriptek (scriptek) hibakereséséhez, a helyi és tesztszerverek kezeléséhez stb. Emiatt megoldások születtek erre a problémára.

Kiterjesztések

A bővítmények fő felhasználási területe felhasználói felület könyvtárak (UI könyvtárak) hozzáadása.

A kiterjesztéseket hagyományosan három csoportra osztják:

  • PHP kiterjesztések: WxPHP ( Windows , Linux , macOS ), Winbinder ( Windows );
  • olyan burkolók, amelyek rendszerfunkciókat használnak FFI-eszközökkel: Win32Std, Tk;
  • wrapperek a parancssori felület használatához: PHP-UI, PHP-XCB.

A kiterjesztéseket, például a kétirányú wrappert más nyelvek használatára fejlesztették ki PHP-bővítmények írásakor, és fordítva. Például a PSV Component Library egy projekt, amely három alprojektből áll:

  • A PHP4Delphi PHP kapcsolatokat valósít meg a Delphiben írt programokkal a WinAPI használatával ; 1999 óta fejlesztették, de 2009 óta nem frissítették, aminek köszönhetően megjelentek az ágak;
  • PHP kiterjesztések fejlesztői keretrendszer - PHP kiterjesztések készítésére szolgáló eszköz, a VCL komponensek a PHP4Delphi szerves részét képezik, melyek alapvető összetevői az alkalmazások létrehozásához szükségesek;
  • A php4Applications egy kiterjesztés a PHP más nyelveken való használatához, PHP4Delphi alapú, amely hozzáférést biztosít a makrókhoz, és leegyszerűsíti a PHP használatát azáltal, hogy nincs szükség wrapper létrehozására.
Fejlesztői környezetek (IDE)

A GUI PHP teljes értékű fejlesztői környezeteinek is van helye:

  • DevPHP

Ebben a kategóriában úttörő a DevPHP-IDE stúdió, amely a Kylixet ( Delphi ) használta az interfész gerinceként, és a phpcli -t használta az egyedi programok létrehozásához.

Tartalmaz egy kódszerkesztőt, több eszközt és egy vizuális HTML-nézegetőt.

2002-ben mutatták be először, mára 3 stabil változata van, de a fejlesztés nem folytatódik - a fő fejlesztő autóbalesetben bekövetkezett halála miatt leállt.

  • CodeGear Rad Studio (bővítmény)

A DevPHP IDE után megjelent egy bővítmény - egy komponenskészlet a CodeGear Rad Studio 2009 -hez, amely php4delphi alapú, némi fejlesztéssel (webes elemek, ellenőr, hibakereső), támogatása négy verzióig tartott, amelyek közül a második a Rad fizetős bővítménybe került. Studio 2010 : lehetőség nyílt szkriptek használatára, webkomponensek stílusozására, stílusok és weboldalak megtekintésére a program felépítése előtt, helyi szerver futtatására, a program önálló alkalmazásként történő létrehozására és a kód hibakeresésére. A Delphi XE kiadásával a bővítmény a RADPHP Xe nevet kapta. Továbbá maga a stúdió Embarcadero Delphi néven vált ismertté, és a bővítményen végzett munkát határozatlan időre felfüggesztették.

  • DevelStudio (RAD)

2009-ben a php4delphi bázisán elkezdődött a grafikus PHP-alkalmazások létrehozására szolgáló környezet fejlesztése, amelyhez később Rostislav Romanov is csatlakozott. A környezet neve PHP DevelStudio volt, az első közzétett verzió a 0.1.7 volt. A DevelStudio eszköztárában kevés komponens volt, és az elavult PHP 4-en futott. A második verzióban a DevelStudio támogatást kapott a PHP 5-höz. Streamek kerültek hozzáadásra, és számos változtatás és fejlesztés történt. A programok összeállítási kódja lezárult, a program korábbi verziói és a fórumon megjelenő üzenetek a behatolók megelőzése érdekében eltávolítva.

A DevelStudio második verziója is kapott egy AlphaControls komponens készletet, aminek eredményeként az egyszerűsége és áttekinthetősége miatt rosszindulatú programok létrehozására használták. Az akkoriban népszerű antivírusok (MacAffee, AVG , Avira ) vírusként kezdtek felismerni minden, a DevelStudióban lefordított programot.

Egy idő után az AlphaControls szerzője panaszt nyújtott be a DevelStudio fejlesztőihez, és a komponenskészletet teljesen eltávolították a környezetből, azonban megőrizték egy már létező verzióban, amelyet ezúttal nem sikerült eltávolítani a fórumról. .

2012-ben jelent meg a környezet legfrissebb verziója - a 3.0.2, ahol új összetevők jelentek meg, köztük az IE helyett a Chromium böngésző , amely felkeltette a webfejlesztők és az Algorithm környezet felhasználóinak figyelmét. Akkoriban a programok Algorithmban történő összeállítása fizetős volt, így a DevelStudio, mint új és ingyenes fejlesztői környezet, magához csábította a közönség nagy részét.

2014-ben kezdődtek az első kísérletek a környezet helyreállítására, ezúttal a közösség részéről . 2018 végén a forráskód visszaállításra került, és elérhető a GitHubon .

2019-ben a közösség megkereste a DevelStudio készítőjét, hogy változtassa meg a környezet terjesztési politikáját, és tegye elérhetővé azt frissítésre és szerkesztésre. A használt könyvtárakra (DCEF, PHP4Delphi, TSizeCtrl, SynEdit) mutató hivatkozások hiányára vonatkozó panaszok miatt a fórumot eltávolítottuk, az egyik környezetet leíró oldalt pedig az oldal főoldalára irányították át. Mostantól a DevelStudio hivatalosan a közösség tulajdona.

  • DevelNext (DN)

Ezzel párhuzamosan a fő fejlesztő DevelStudio elkezdte létrehozni az előző környezet "reinkarnációját". A JavaFX grafikus könyvtárat vette alapul , ami egy teljesen új környezetet eredményezett, CSS támogatással , de a Zend PHP könyvtár teljes támogatása nélkül  – a projekt saját jPHP nyelvén alapult. Jellemzői a következők: munka a JVM -en , JIT fordító, Unicode - támogatás , többszálú feldolgozás és egy objektum-orientált szabványkönyvtár.

A 16. verzióban a DevelNext környezet php 7 támogatást kapott, ezzel párhuzamosan pedig a jPHP-t egy rajongó kiterjesztette az Android operációs rendszer alatti fejlesztésekre .

Jelenleg a szerző és a rajongók a 2020-as (korábban 17-es) verzión dolgoznak.

  • PHPQt

2015-ben Alexander Kazantsev interfészfejlesztési algoritmusokat kezdett tanulmányozni, és létrehozta a php_qml kiterjesztést, amely lehetővé tette a QT könyvtár widgeteinek használatát, de csak Windows alatt működött.

Ezzel megkezdődött a PHPQt fejlesztése, az első verziók nem fordítottak nagy figyelmet a webfejlesztők részéről, így a szerző a kiterjesztés mélyreható fejlesztésébe kezdett.

2015. július 28-án jelent meg a projektfordító első verziója, amely akkoriban egy egyszerű szkript (script) végrehajtó volt, amely php kódot csatolt a csonkhoz (mint a DevelStudio), és függött a Windows API-tól, Ebben a szakaszban szinte minden widget támogatott és többszálas volt, egyszerű volt a php kód optimalizálása. Ettől a pillanattól kezdve a motor neve PQEngine,

2016. augusztus 3-án jelent meg az alkalmazásfordító (PqBuilder) ötödik verziója, amely PlastiQ alapra váltott, és támogatta a legújabb, akkori php 7-et, a projektek teljesebb fordítót kaptak, és már nem kellett hozzá. jelenléte PqEngine.dll a végrehajtható fájl közelében, ehelyett Ez a vizuális könyvtárak elkezdték dinamikusan hozzáadni - fájlként, és nem varrva a PQEngine.dll-be. Ezt a lépést a más rendszerekkel és az eredeti Qt könyvtárakkal való kompatibilitás érdekében tették meg.

A hatodik verzió megjelenésével a projekt a Qt Studio környezet kiegészítője lett, a fordító pedig csak egy kódoptimalizáló lett a program végső összeállítása előtt. Megjelent egy teljes értékű felületszerkesztő, tippek a kódszerkesztőben, és elkezdődött a dokumentáció elkészítése. Ettől a pillanattól kezdve bejelentést tettek a PqStudio környezet létrehozásáról, de fejlesztése nem ment messzire.

  • WinForms PHP

2018-ban megjelent egy projekt, amely a Windows Forms (.NET Framework) és a PHP 7 képességeit ötvözi, fejlesztése még mindig lassú ütemben zajlik.[ mikor? ] . Jelenleg szinte minden elérhető a motorban[ mi? ] függvények az OOP-hoz. A környezet privát fejlesztés alatt áll. Az alapértelmezett végrehajtható fájl a php7ts.dll fájllal érkezik.

PHP csatlakoztatása projekthez

Léteznek kiterjesztések is az ellenkező felhasználásra - a PHP összekapcsolása egy másik programozási nyelvű projekttel: Phalanger (C#, php 5.4-től 7-ig), Peachpie] (C#, php 7), PHP4Delphi (Lazarus, Delphi, C#, C, C++ , php 5.6, JPHP (Java, php 7.0), PHPly (Python, php 5.6)

Történelem

1994 -ben a dán programozó , Rasmus Lerdorf C [16] nyelven kifejlesztett egy CGI-szkriptet , hogy figyelembe vegye a látogatók online önéletrajzát , amely HTML dokumentumsablonokat dolgoz fel. Lerdorf a készletet Personal Home Page Tools (Eszközök személyes kezdőlaphoz ) néven nevezte el. Hamarosan a funkcionalitás már nem volt elegendő, és Lerdorf kifejlesztett egy új PHP/FI sablontolmácsot ( English  Personal Home Page / Forms Interpreter  – „személyes honlap / űrlaptolmács”) [17] .

1995. június 8-án megjelent a Personal Home Page (PHP Tools) 1.0-s verziója – az első nyilvános kiadás.

1997- ben, hosszas bétatesztelés után, megjelent a C nyelven írt kezelő második verziója  - a PHP / FI 2.0. A világ összes internetes domainjének körülbelül 1%-a (körülbelül 50 ezer) használta [11] .

A PHP 3.0 jelentős átalakításon esett át, amely meghatározza a programozási nyelv modern megjelenését és stílusát. 1997-ben két izraeli programozó, Andy Gutmans és Zeev Suraski teljesen átírta a tolmács kódját. A PHP 3.0 hivatalosan 1998 júniusában jelent meg [11] .

A PHP 3.0 egyik erőssége az volt, hogy a magot további modulokkal bővítették. Ezt követően a kiterjesztés írási felülete sok külső fejlesztőt vonzott a PHP-hez, akik moduljaikon dolgoznak, ami lehetővé tette a PHP számára, hogy rengeteg adatbázissal , protokollal dolgozzon , és nagyszámú API -t támogasson . A fejlesztők nagy száma a nyelv gyors fejlődéséhez és népszerűségének gyors növekedéséhez vezetett. Ebben a verzióban a php betűszó a "PHP: hypertext Preprocessor" rövidítése, az elavult "Személyes kezdőlap" helyett.

1998 telén, szinte közvetlenül a PHP 3.0 hivatalos kiadása után, Andy Gutmans és Zeev Suraski megkezdte a PHP mag átdolgozását. A célok között szerepelt az összetett alkalmazások teljesítményének növelése és a PHP kódbázis modularitásának javítása. Az új motor, a Zend Engine sikeresen megbirkózott a feladatokkal, és először 1999 közepén mutatták be . A PHP 4.0 , amely ezen a motoron alapul, és további funkciókat hoz magával, hivatalosan 2000 májusában jelent meg . A teljesítménynövekedés mellett a PHP 4.0 számos más kulcsfontosságú újítást is tartalmazott, mint például a munkamenet-támogatás, a kimeneti pufferelés , a felhasználói bevitel biztonságosabb kezelési módjai és számos új nyelvi konstrukció.

A PHP ötödik verzióját 2004. július 13-án adták ki a fejlesztők . A változtatások közé tartozik a Zend mag frissítése ( Zend Engine 2 ), ami jelentősen növelte az interpretátor hatékonyságát . Bevezettük az XML jelölőnyelv támogatását . Az OOP függvényeket teljesen újratervezték , és nagyon hasonlítanak a Java -ban használt modellhez . Különösen egy destruktor került bevezetésre , nyilvános, privát és védett tagok és módszerek , végső tagok és módszerek, interfészek és objektumok klónozása. A későbbi verziók névtereket , lezárásokat és számos meglehetősen komoly változtatást is bevezettek, mennyiségileg és minőségileg összehasonlíthatóak a PHP 5.0-ra való átállás során megjelentekkel.

A PHP hatodik verziója 2006 októbere óta fejlesztés alatt áll [18] . Számos újítás született [19] [20] , például a POSIX reguláris kifejezések és a "hosszú" szuperglobalok eltávolítása a magból, valamint a safe_mode , magic_quotes_gpc és register_globals direktívák eltávolítása a php.ini konfigurációs fájlból. Az egyik fő újításnak a Unicode támogatása volt [21] . 2010 márciusában azonban a PHP6 fejlesztését kilátástalannak ítélték [22] az Unicode támogatással kapcsolatos nehézségek miatt. A PHP6 forráskódja átkerült a -ba , és az 5.4-es verzió lett a fejlesztés fő vonala.

PHP 7

2014-ben szavazást tartottak, melynek eredményeként a következő verzió a PHP 7 nevet kapta [23] . Az új verzió megjelenését 2015. október közepére tervezték [24] . 2015 márciusában a Zend kiadott egy infografikát , amely felvázolja a PHP 7 főbb újításait [25] .

2015. december 3- án bejelentették a PHP 7.0.0-s verzióját [26] .

Az új verzió a PHP egy kísérleti ágán alapul , amelyet eredetileg phpng -nek ( PHP Next Generation "next generation") hívtak, és a teljesítmény növelésére és a memóriafogyasztás csökkentésére összpontosítva fejlesztették ki [27] . Az új verzió lehetőséget ad a [28] függvényből visszaadott adatok típusának megadására , hozzáadott típusvezérlést az adatokhoz [29] , valamint új operátorokat.  

2019. június 13-án megjelent a PHP 7.4. A maghoz tipizált tulajdonságok és nyílfüggvények kerültek, valamint korlátos visszatérési típusú kovariancia és argumentum típusú kontravariancia [30] .

PHP 8

A PHP 8.0-s verziója 2020. november 26-án jelent meg [31] . A főbb újítások a következők voltak [32] : szakszervezeti típusok [33] támogatása , JIT összeállítás [34] és attribútumok (más néven annotációk), továbbá a kapcsoló „konstrukciója” egy megfelelő „kifejezésre” került, és egy új Nullsafe operátor került. tette hozzá.

2020. július 9-én Dale Hirt , a Microsoft PHP  projektmenedzsere üzenetet [35] adott ki egy levelezőlistán , amely szerint a PHP 8.0 megjelenése után a Microsoft leállítja ennek a programozási nyelvnek a Windows -hoz való fejlesztésének támogatását [36] . A Microsoft szakemberei a tolmács bináris verzióit fordították Windowsra, és tesztelték azok biztonságát. A PHP fejlesztői közösség arról számolt be, hogy minden szükséges intézkedést megtesznek annak érdekében, hogy a közeljövőben alternatív lehetőséget találjanak a PHP 8.0 és újabb támogatásának megszervezésére a Windows számára, például önállóan [37] . php.internals

Szintaxis

A PHP szintaxisa hasonló a C nyelvéhez . Egyes elemek, mint például az asszociatív tömbök és a ciklus foreach, a Perl -ből származnak .

A PHP lexikális elemzése a re2c [38] [39] segédprogramon keresztül történik , amely gyors és könnyen beágyazható lexereket generál.

Egy egyszerű szkript írásához nem kell leírnia semmilyen változót, használt modult stb. Bármely szkript közvetlenül a <?php.

A PHP legegyszerűbb Hello world programja így néz ki:

<?php echo 'Szia, világ!' ; ?>

A karakterlánc kimenet rövidebb változata is lehetséges:

<?= 'Szia, világ!' ?>

A nyitó nézet címke a <?=sor megjelenítéséhez használt konstrukciók lerövidítésére szolgál.

A PHP olyan kódot hajt végre, amely határolókon belül van, például <?php ?>. Minden, ami a határokon kívül esik, változatlan formában jelenik meg. Ezt főleg PHP kód beszúrására használják HTML dokumentumba, például:

< html > < fej > < cím > PHP tesztelése </ title > </ head > < body > <?php echo 'Hello world!'; ?> </ body > </ html >

A határolójelek <?php ?>mellett megengedett (de elavultnak és gyakorlatilag nem használtnak elismert) a rövidített változat használata <? ?>. Ezenkívül a 7.0-s verzió előtt az ASP <% %> és a <script language="php"> </script>. A parancsikonok működését a php .ini konfigurációs fájl határozza meg .

A változónevek szimbólummal kezdődnek, $a változó típusát nem kell deklarálni. A változó- és konstansnevek megkülönböztetik a kis- és nagybetűket. Az osztályok, osztálymetódusok és függvények nevei nem különböztetik meg a kis- és nagybetűket. A változók feldolgozása dupla idézőjeles karakterláncokban és heredoc karakterláncokban történik (a <<< operátorral létrehozott karakterláncok). Az idézőjelbe zárt karakterláncok és a nowdoc változói nem kerülnek elemzésre.

Az utasításokat pontosvessző választja el ( ;), kivéve néhány esetben az if/else konstrukciók és ciklusok deklarálása után.

A változókat értékkel és hivatkozással is átadhatjuk egy függvénynek (jelet használunk &).

A PHP háromféle megjegyzést támogat: C -style (elhatárolt /* */), C++// ( a sor végével kezdődik és a sor végéig), és UNIX shell ( #a sor végéig).

Adattípusok

A PHP egy dinamikusan tipizált programozási nyelv , amely nem igényli a típus megadását a változók deklarálásakor, valamint magát a változó deklarációt sem.

A skaláris adattípusok a következők:

A nem skaláris típusok a következők:

  • tömb _
  • tárgy _
  • külső erőforrás (erőforrás)
  • meghatározatlan érték (null)

Az egész számok tartománya (int) PHP-ben a platformtól függ (32 bites architektúra esetén a szám tartománya nem haladja meg az int32_t értéket, azaz -2 147 483 648 és 2 147 483 647 között). A számok decimális, oktális és hexadecimális számrendszerben adhatók meg . A valós számok tartománya (lebegő) a platformtól is függ (32 bites architektúra esetén a tartomány lehetővé teszi, hogy ±1,7 × 10 -308 és ± 1,7 × 10 +308 közötti számokkal dolgozzon ).

A PHP egy logikai típust biztosít a fejlesztőknek, amely csak két értéket vehet fel true("igaz") és false("false"). Logikai értékre konvertálva a 0 számot, az üres karakterláncot, a nullát a „0” karakterláncban nullés az üres tömböt egyenlőnek tekintjük false. Az összes többi érték automatikusan konvertálódik értékre true.

A speciális null típus a meghatározott érték nélküli változókra vonatkozik. Ennek a típusnak az egyetlen értéke egy literál null. A null típus elfogadja az inicializálatlan változókat, a konstanssal inicializált változókat, nullvalamint a -val törölt változókat unset().

A külső erőforrásokra mutató hivatkozások erőforrás típusúak. Az ilyen típusú változók általában olyan leírók , amelyek lehetővé teszik a külső objektumok, például fájlok, dinamikus képek, az eredményül kapott adatbázistáblák stb. kezelését. A nyelv fejlődésével a szabványos könyvtár fokozatosan finomodik, és az erőforrásokat objektumok váltják fel. . Így a tervek szerint ettől a típustól teljesen megszabadulnak.

A tömbök (tömbök) támogatják a numerikus és karakterlánc-kulcsokat, és heterogének . A tömbök bármilyen típusú értéket tartalmazhatnak, beleértve a többi tömböt is. Az elemek és kulcsaik sorrendje megmarad. Nem teljesen helyes a php tömbök tömböket hívni, valójában ez egy rendezett hash . Váratlan viselkedés lehetséges, ha a ciklus forhelyett számlálót használunk foreach. Így például ha egy numerikus indexű tömböt a szabványos könyvtár függvényei szerint rendezünk, a kulcsok is rendezésre kerülnek.

Gépelve

A nyelv lehetővé teszi argumentumok, függvények és osztálymetódusok visszatérési értékeinek beírását, valamint a 7.4-es verziótól kezdve az osztálymezők beírását . A szigorú mód engedélyezése letiltja az implicit típuskonverziókat a kód ezen szakaszaiban, ami közelebb hozza a nyelv viselkedését az erős gépelést használó nyelvekhez .

A , , , vagy típusok integy stringargumentumtípus float, osztálymező vagy visszatérési érték érvényes definíciói bool. Az osztályok vagy interfészek nevének használata is megengedett egy adott megvalósítás meghatározásához. Típusmeghatározásra használata nem megengedett, és a jelzés megszorításokkal lehetséges: Csak az összegtípus definícióján belül , például (vagy ). arrayobjectresourcenullint|null?int

A modern PHP alapvető támogatást valósít meg az algebrai adattípusokhoz, és lehetővé teszi a konjunkció és a diszjunkció használatát a típusok meghatározásakor. A nyelv nem engedélyezi a típusálneveket , de számos beépített implementációt biztosít, amelyeket "pszeudotípusoknak" neveznek a PHP-n belül. A nyelvben található hasonló kifejezés minden olyan típusdefinícióra vonatkozik, amely nem független, alkalmazható egy értékre, de csak típusellenőrzési utasításként van megvalósítva a Zend VM-ben.

A pszeudotípusok a következők:

  • bármilyen típusú kevert
  • iterálható (tömb vagy bármilyen objektum, amely megvalósítja az iterátor felületet ).
  • hívható ( névtelen függvény , karakterlánc vagy tömb) [40]
  • void return típus, ami azt jelenti, hogy a függvényből nincs visszatérés
  • soha ne térjen vissza, ami azt jelzi, hogy az alkalmazás megszakadt
  • A self egy típus, amely arra az osztályra utal, amelyen belül ezt a típust használták (használhatja a szülő vagy statikus álneveket, de az utóbbi csak visszatérésként szolgál)
  • hamis típus (bool rész), amely csak az úgynevezett uniótípus egyik elemeként használható , pl.int|false

A típusellenőrzések mellett a beépített "pszeudotípusok" további ellenőrzési logikát is megvalósíthatnak. Például callableegy típus ábrázolható:

  • egy karakterlánc, amelynek tartalmaznia kell a függvény nevét;
  • egy tömb, ahol a nulla és az első elem karakterlánc (egy statikus osztályfüggvény neveként értelmezve);
  • egy tömb, ahol a nulla elem egy objektum, az első pedig egy karakterlánc (metódusként értelmezve az objektumon).

Funkciók

A PHP támogatja mind a megnevezett függvények deklarálását, mind az első osztályú névtelen függvényeket , például:

// Egy elnevezett függvény deklarációja function get_hello_world () : string { return 'Hello World!' ; } // Névtelen függvénydeklaráció $getHelloWorld = function () : string { return 'Hello World!' ; }; // Rövid szintaxis $getHelloWorld = fn () : string => 'Hello World!' ;

Érdemes megjegyezni, hogy az anonim függvények esetében a különbség nem csak a vizuális különbségekben van, hanem a külső kontextusváltozók rögzítésének módjában is. A jelölés bármely "rövid" formája lezárás , míg a lezárás megvalósításához szükséges hosszú jelölésekhez explicit módon kell megadni az operátoron belüli változókat useegy külső kontextusból, hogy rögzítsék őket:

$variable = 'Hello World!' ; // Utasítás használata use function () use ( $variable ) : string { return $változó ; }; // Alternatív megoldás, rövid fn () szintaxis használatával : string => $változó ;

Változók és függvények elérése

$A változókat a szimbólummal , majd a változó nevével lehet elérni . Ez a konstrukció dinamikus változók és függvények létrehozására is használható. [41] Például:

$a = 'A vagyok' ; // Érték írása a $a echoba $a ; // $a kimeneti változó $b = 'a' ; echo $$b ; // $a változó megjelenítése (extra $ a $b változó előtt) echo $ { 'a' }; // $a kimeneti változó függvény_neve (); // Funkció hívása függvény_neve $c = 'függvény_neve' ; $c (); //A függvény_neve függvény meghívása $d = 'Osztálynév' ; $obj = új Osztálynév ; // Osztálynév objektum létrehozása $obj = new $d (); // Osztálynév objektum létrehozása $obj -> b osztályból ; // Az objektum b tulajdonságának elérése $obj -> c (); // Az objektum c() metódusának meghívása $obj -> $b ; // Az objektum a tulajdonságának elérése, mivel $b = 'a' $obj -> $c (); // Az objektum function_name() metódusának meghívása, mivel $c = 'function_name'

A PHP echo-ben, printbár függvényeknek tűnnek, az előbbi egy [42] operátor , az utóbbi pedig egy kifejezés (vagyis printértéket ad vissza, ellentétben a -val echo). Használatuk során a zárójelek elhagyhatók.

Superglobals

A PHP szuperglobális tömbjei előre meghatározott tömbök, amelyek globális hatókörrel rendelkeznek az irányelv használata nélkül .  A legtöbb ilyen tömb tartalmazza a felhasználó kérésének bemeneti adatait ( GET kérés paraméterei, űrlapmezők, ha POST metódussal küldik , cookie -k stb.). global

$GLOBALSA és kivételével minden szuperglobal $_REQUESTrendelkezik elavult, hosszú nevű megfelelőivel, amelyek az 5.3-as verzióig elérhetők. x (mivel az 5.4.0-t eltávolították). Így a $_GET['year']és a meghívások $HTTP_GET_VARS['year']azonosak (kivéve a hatókört: a "hosszú" nevű tömbök nem szuperglobálisok).

$GLOBALS Az összes globális változó tömbje (beleértve a felhasználói változókat is). $_SERVER(analóg az elavulthoz - $HTTP_SERVER_VARS) Olyan környezeti változókat tartalmaz, amelyeket az operációs rendszer továbbít a kiszolgálónak. $_ENV(száj $HTTP_ENV_VARS) Jelenlegi környezeti változók ( eng.  Environment variables ). A készletük arra a platformra vonatkozik, amelyen a szkript fut. $_GET(száj $HTTP_GET_VARS) A " " kérdőjel után az URI-ban átadott GET-kérés paramétereit tartalmazza ?. $_POST(száj $HTTP_POST_VARS) HTML űrlapmezőértékek asszociatív tömbje, amikor a POST módszerrel küldik el. Az elemindexek namea HTML-űrlap objektumai (gombok, űrlapok, rádiógombok, jelölőnégyzetek stb.) egy tulajdonságának az értékének felelnek meg. $_FILES(száj $HTTP_POST_FILES) Egy asszociatív tömb a POST metódussal küldött fájlok információival. Minden elemnek van egy indexe, amely megegyezik az űrlapon lévő "name" attribútum értékével, és egyben egy tömb is a következő elemekkel:
  • ['name'] a fájl eredeti neve a felhasználó számítógépén.
  • ['type'] a felhasználói ügynök által megadott fájl MIME típusa. A PHP nem ellenőrzi, ezért nincs garancia arra, hogy a megadott típus helyes.
  • ['size'] - fájlméret bájtban.
  • ['tmp_name'] — az ideiglenes mappában lévő fájl teljes elérési útja. A fájlt onnan kell áthelyezni a move_uploaded_file. A PHP önmagában törli a feltöltött fájlokat az ideiglenes mappából.
  • ['error'] - hibakód. Ha a fájl betöltése sikeres volt, akkor ez az elem egyenlő lesz 0-val ( UPLOAD_ERR_OK).
$_COOKIE(száj $HTTP_COOKIE_VARS) Egy asszociatív tömb a felhasználói ügynök által átadott cookie -értékekkel . $_REQUEST $_GETA , $_POST, tömbök elemeit tartalmazza $_COOKIE. A PHP 4.1-től kezdve tartalmazza a $_FILES. $_SESSION(száj $HTTP_SESSION_VARS) Munkamenet-adatokat tartalmaz.

Objektumorientált programozás

A kulcsszó classa nyelv harmadik változatában le van foglalva. A negyedik változatban lehetővé vált osztályok és ezek alapján objektumok létrehozása. Az OOP elveket azonban csak részben támogatták, például minden tag (változók és módszerek) nyilvános volt. Ráadásul az objektumok létrehozása drága és lassú volt.

A PHP teljes OOP -támogatással rendelkezik az 5-ös verzió óta . Az osztályokkal való munkavégzést optimalizálták, és most az ilyen kód meglehetősen gyorsan működik.

A PHP-ben egy osztályclass a következővel van deklarálva . Az osztálymetódusok és -tulajdonságok lehetnek nyilvánosak ( public, alapértelmezett), védettek ( protected) és rejtettek ( private). A PHP mindhárom fő OOP-mechanizmust támogatja - a beágyazást , az altípus-polimorfizmust és az öröklődést (a szülőosztályt az osztály neve után egy kulcsszó határozza meg extends). Az interfészek támogatottak (leképezve: implements). A végleges , absztrakt metódusok és osztályok deklarálása megengedett. Az osztályok többszörös öröklése nem támogatott, azonban egy osztály több interfészt is megvalósíthat. A kulcsszó a szülőosztály metódusainak elérésére szolgál parent.

Az 5.4.0 - s verzió óta a többszörös öröklődés is megvalósítható a tulajdonságmechanizmus segítségével .  A funkciók hasonlóak a mixinekhez , azzal a különbséggel, hogy közvetlenül nem példányosíthatók . A kód újrafelhasználása abban rejlik, hogy több osztályban használjuk a szolgáltatáskódot. Egy osztályban több szolgáltatás használata megengedett. A szolgáltatások mechanizmusának van egy eszköze a névütközések feloldására. Amikor a program fut, a szolgáltatás kódja „le lesz fordítva” az azt tartalmazó osztály kódjába.  

A PHP osztályaiban számos „mágikus” metódus található ( eng.  magic method ), két aláhúzásjellel kezdve - egy konstruktorral ( __construct(), az 5.0 előtti verziókban a konstruktor az osztályéval azonos nevű metódus volt) és a destruktorral ( __destruct()), valamint olvasási ( __get()) és írási ( __set()), hajtogatási ( __sleep()) és bővítési ( __wakeup()), klónozási ( __clone()), stb. módszerek. Ezek a módszerek meglehetősen rugalmas eszközök: újradefiniálásával jelentős változást érhetünk el a tárgy.

Minden tagfüggvény virtuálisként van megvalósítva, ezért mindegyik metódus.

Egy osztály példányai a kulcsszó használatával jönnek létre new, az objektum tulajdonságai és metódusai az operátor segítségével érhetők el ->. A változó az osztály tagjainak eléréséhez használható a metódusaiból $this.

osztály C1 kiterjeszti C2 implements I1 , I2 { private $a ; védett $b ; public function __construct ( $a , $b ) { szülő :: __construct ( $a , $b ); $this -> a = $a ; $ez -> b = $b ; } public function plus () { return $this -> a + $this -> b ; } /* ............... */ } $d = új C1 ( 1 , 2 ); echo $d -> plusz (); 3

A PHP 5 óta az objektumok hivatkozással kerülnek átadásra:

class A { public $color = 'piros' ; } $a = újA ( ); visszhang $a -> szín ; // piros $b = $a ; $b -> szín = 'kék' ; visszhang $a -> szín ; // kék

"Paamayim Nekudotayim" ( héberül : פעמיים נקודתיים) vagy egyszerűen "kettős kettőspont". Ezzel a tokennel a programozó hozzáférhet az osztály állandóihoz, statikus vagy túlterhelt tulajdonságaihoz vagy metódusaihoz. Amikor ezekre az elemekre az osztályon kívülről hivatkozik, a programozónak az osztály nevét kell használnia. A "Paamayim Nekudotayim" első pillantásra furcsa kifejezésnek tűnhet a kettős kettőspontra. Azonban a Zend Engine 0.5-ös verziójának (amely a PHP3-ban szerepelt) létrehozásakor Andi és Zeev ezt a jelölést választották [43] . A "Paamayim Nekudotayim" valójában azt jelenti, hogy "kettős kettőspont" (szó szerint: "kettős kettőspont") héberül. Ez a jelölés soha nem változott a PHP fejlesztése során [44] .

class MyClass { public const CONST_VALUE = 'Állandó érték' ; } // A :: használata az osztálydeklaráción kívül echo MyClass :: CONST_VALUE ;

A tolmács jellemzői

A PHP szkripteket általában a tolmács olyan sorrendben dolgozza fel, amely biztosítja, hogy a kifejlesztett alkalmazás többplatformos legyen:

  1. forráskód lexikális elemzés és token generálás ,
  2. a kapott lexémák szintaktikai elemzése ,
  3. műveleti kód generálása egy virtuális géphez (egyfajta bájtkód ),
  4. optimalizálás (például DCE ),
  5. a műveleti kód végrehajtása az értelmező által ( futtatható fájl létrehozása nélkül ), vagy az eredmény JIT-összeállítása az ezt követő végrehajtással (a JIT engedélyezéséhez speciális jelző szükséges az interpreter beállításaiban).

Korábban az alkalmazások teljesítményének növelése érdekében speciális szoftvereket , az úgynevezett gyorsítókat lehetett használni . Működésük elve az, hogy az egyszer generált bájtkódot gyorsítótárazzák a memóriában és/vagy a lemezen , így az 1-3. Az 5.5-ös verzió óta az egyik gyorsító, az opcache be van építve a kernelbe, így a harmadik féltől származó megoldások már nem népszerűek.

Fontos jellemzője, hogy a fejlesztőnek nem kell aggódnia a memória lefoglalása és felszabadítása miatt. A PHP magja lehetővé teszi az automatikus memóriakezelést; az összes lefoglalt memória visszakerül a rendszerbe, miután a szkript leáll [45] .

Kiterjesztések

Az értelmező egy magból és beépülő modulokból , "kiterjesztésekből" áll , amelyek dinamikus könyvtárak . A bővítmények lehetővé teszik a nyelv alapvető funkcióinak kiegészítését, lehetővé téve az adatbázisokkal , socketekkel , dinamikus grafikával , kriptográfiai könyvtárakkal, PDF -dokumentumokkal és hasonlókkal való munkavégzést. Bárki kifejlesztheti saját kiterjesztését és csatlakoztathatja azt. Rengeteg kiterjesztés létezik, mind a szabványos, mind a külső cégek és a rajongók által készített bővítmények, de csak néhány tucat, jól bevált bővítmény található a standard csomagban. Számos kiterjesztés érhető el a PECL - tárolóban .

A 7.4.0-s verzió óta FFI támogatással bővült a PHP, ami nagymértékben leegyszerűsíti a bármilyen más nyelven írt könyvtárakkal való interakciót (beleértve az operációs rendszer által biztosított API-t is). Ez az új funkció viszont alternatívát jelentett a kiterjesztések írására. Így az FFI használatával kódot írhat PHP-ben, és interakcióba léphet a rendszer bármely könyvtárával, amely biztosítja a cdecl-t fastcallvagy az stdcall ABI -t .

Beállítások

A PHP interpreternek van egy speciális konfigurációs fájlja  - php.ini, amely számos beállítást tartalmaz, amelyek megváltoztatása befolyásolja az értelmező viselkedését [46] . Lehetőség van számos funkció használatának letiltására, a szkript által használt RAM korlátainak, a végrehajtási időnek, a letöltött fájlok méretének módosítására, a hibanaplózás konfigurálására, a munkamenetek és levelező szolgáltatásokkal való munkavégzésre, további bővítmények csatlakoztatására, ill. sokkal több. Lehetőség van egy nagy konfigurációs fájl részekre bontására. Például általános gyakorlat, hogy a kiterjesztési beállításokat külön fájlokban helyezik el. Az értelmező beállításai felülbírálhatók a HTTP-kiszolgáló konfigurációs fájljaiban (például .htaccessaz Apache -ban ), vagy magában a szkriptben futás közben a ini_set[47] paranccsal .

Interpreter indítási módok (SAPI)

A SAPI egy külső absztrakciós réteg , amelyet arra terveztek, hogy értelmezőt ágyazzon be más alkalmazásokba, és felelős annak működéséért (indítás, leállítás, szkriptek átadása végrehajtáshoz, külső adatokhoz való hozzáférés). Számos fő SAPI létezik, amelyek meghatározzák a PHP futtatását és használatát:

  1. Modulként a webszerverhez (például az Apache modulhoz mod_php). Ebben az esetben a PHP értelmező a webszerver folyamat környezetében fut. A webszerver kezeli a futó PHP-folyamatok számát, és megmondja nekik, hogy mely szkripteket futtassák.
  2. CGI SAPI. A CGI használata azt jelenti, hogy minden kérés feldolgozásához új folyamatot indítunk. PHP szkript végrehajtásához a webszerver lefuttatja a ./php-cgi /path/to/script.php. Az ilyen használat alapelve magában foglalja, hogy a PHP értelmező csak egy szkriptet hajt végre, majd befejezi a munkáját. A tolmácsfolyamat elindításának és inicializálásának költsége nagyon gyakran hasonló, vagy még magasabb is, mint egy PHP-szkript végrehajtásának költsége. A probléma megoldására a FastCGI módot vezették be a CGI SAPI-ban. Ebben a módban a PHP-tolmács független szerverként fut, amely a bejövő kéréseket PHP-szkriptek futtatására dolgozza fel a FastCGI protokoll használatával, amely lehetővé teszi, hogy bármely webszerverrel működjön, amely támogatja ezt a protokollt.
  3. Az FPM SAPI, más néven php-fpm, a FastCGI protokoll másik megvalósítása. Eredetileg Andrey Nigmatulin készítette külön javításként a Badoo közösségi hálózaton való használatra. Ez a megvalósítás számos olyan problémát megoldott, amelyek megakadályozták a CGI/FastCGI SAPI használatát. Különösen lehetővé vált a PHP-tolmácsok készletének újraindítása kérések elvesztése nélkül, több készlet futtatása különböző felhasználók alatt, a tolmácsok vészhelyzeti újraindítása a velük kapcsolatos problémák esetén, és néhány további szép kiegészítés. Ezt követően többen dolgoztak a javításon, bekerült a futó PHP folyamatok számának dinamikus kezelésére szolgáló mód (hasonlóan az Apache webszerverben lévő folyamatok számának kezeléséhez), és a PHP 5.3.3-tól kezdve a php-fpm bekerült a A PHP külön SAPI-ként.
  4. Parancssori szkriptként (CLI SAPI), amely egy végrehajtható fájl , amelyet a felhasználó hív meg a parancssorból ; a szkript a hívó felhasználó környezetében fut le. Ebben az esetben lehetséges a PHP segítségével kliens grafikus felületű alkalmazások [48] létrehozása és adminisztrációs feladatok megoldása UNIX , Linux , Microsoft Windows , Mac OS X és AmigaOS operációs rendszerekben . Ebben a minőségében azonban nem szerzett népszerűséget, a pálmát a Perlnek , a Pythonnak és a VBScriptnek adta .

A PHP 5.4.0-tól kezdődően a SAPI CLI képes futtatni a PHP-t önálló HTTP-kiszolgálóként. Ez a mód azonban kizárólag fejlesztési célokat szolgál, mivel csak egy értelmezői folyamatot futtat, és minden lekérdezést tisztán szekvenciálisan hajt végre.

húsvéti tojások

A PHP-ben van néhány easter egg (vicc). Speciális GET paraméterek átadása bármely php szkriptnek különféle képek kimenetét eredményezi.

Például:

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

Ha beírja ezt az értéket a böngésző címsorába, az értelmező verziójától függően különböző képeket láthat:

  1. Thies Arntzen fotója (4.1.2, 4.2.2 verzió)
  2. fénykép egy tacskóról (tulajdonos Stig Bakken ) (4.3.2, 4.3.3, 4.3.8-4.3.10 verzió)
  3. fekete terrier fotó (tulajdonos Zeev Suraski ) (4.3.11, 4.4.0-4.4.4, 5.1.0, 5.1.2 verziók)
  4. fotó egy nyúlról (4.3.1, 5.0.0, 5.0.3 verzió)
  5. torz PHP logó (5.1.3-5.2.13 verzió) [49]
  6. fénykép egy kék játék elefántról PHP felirattal (5.3.0 verzió óta) [49]

A következő két érték lehetővé teszi a szabványos PHP és a ZEND logó megtekintését [49] :

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

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

Ezek az értékek közvetlenül a PHP szkriptben is beszerezhetők a függvények segítségével php_logo_guidés zend_logo_guida Zend logóhoz.

Van egy speciális érték is az összes PHP (4,5) [49] szerző listájának megjelenítéséhez :

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

Alternatív megvalósítások

A PHP nyelv népszerűsége és az arra épülő webes alkalmazások sebességének növelése miatt több olyan alternatív fordító is született , amelyek közel állnak a PHP nyelvhez. Így 2010 februárjában a Facebook megnyitotta [ 50] [51] PHP-fordítóját - a HipHop -ot (HPHP, Hyper-PHP), amely C++ kódot generál, majd a gcc segítségével gépi kódra fordítja . 2013 júliusában az orosz VKontakte cég bejelentett egy hasonló terméket, a KPHP -t [52] .

A táblázat a jelenleg létező alternatív megvalósítások listáját tartalmazza.

Név PHP verzió (kb.) Engedély Összeállítás eredménye
PHP 7.4 GPL C++ , natív kód
hip-hop 5.4 PHP licenc C++ , natív kód
Roadsend PHP 5.3 GPL / LGPL C , gépi kód
Phalanger 5.5 Ms SS-PL [53] ( Megosztott forrás ) Microsoft IL
Quercus ( a Resin webszerver része ) 5.2 GPL vagy kereskedelmi JVM
PHC 5.2 BSDL C , gépi kód
Pipp [54] 5.3 Művészi licenc és GNU GPL Papagáj
JPHP [55] 7.1 (részben 7.2, 7.3 és 7.4) [56] Apache 2.0 JVM
PHP 5.4 MIT PHP
PH7 5.5 Saját (Symisc nyilvános licenc) C , gépi kód
HippyVM 5.6 MIT RPython/PyPy

Egyes fordítók összehasonlító elemzése elérhető a phpclasses.org webhelyen [57] .

Engedélyezés

Ökoszisztéma

Frameworks

Tartalomkezelő rendszerek

A PHP a legnépszerűbb nyelv a tartalomkezelő rendszerek (CMS) fejlesztésében.

Eszközök PHP alkalmazások fejlesztéséhez

Név Engedély
Codelobster Ingyenes szoftver
Komodo Mozilla háromlicenc ( MPL / LGPL / GPL ) [58]
phpstorm Saját szoftver
PHP fejlesztői eszközök Eclipse nyilvános licenc
zend stúdió shareware
Aptana Stúdió GNU GPL
phpDesigner shareware
PHP szakértői szerkesztő Shareware [59]
NetBeansIDE CDDL
RadPHP XE próba
NuSphere próba
KDevelop [60] GNU GPL
Microsoft Web Matrix Ingyenes szoftver
Jegyzettömb++ GNU GPL
Magasztos szöveg Saját szoftver
VS.Php a Visual Studio számára Saját szoftver
PHP eszközök a Visual Studio számára próba
DevelNext MPL-2.0
jEdit GNU GPL -2.0

PHP szabvány ajánlások

A PHP Standard Recommendation ( röv. PSR  [ ) egy PHP specifikáció, amelyet olyan mérvadó PHP projektek csoportja fejlesztett ki, fogadott el és tesz közzé, mint a CakePHP, a Composer , a Joomla, a PEAR , a Phalcon, a phpDocumentor , a TYPO3, a Yii keretrendszer [61]. . A specifikáció a PHP programozási koncepciók szabványosításaként szolgál, és valós tapasztalatokon, valamint kutatásokon és kísérletezéseken alapul [62] . Az ajánlások célja a különböző fejlesztők által fejlesztett webalkalmazás -összetevők kompatibilitásának biztosítása.

Kritika

A PHP nyelv hívei fő előnyeként a széles körű alkalmazást, a PHP fejlesztők iránti keresletet a munkaerőpiacon és a könnyű tanulást említik. A nyelv előnyei közé tartozik meglehetősen gyors fejlődése.

A többbájtos kódolások támogatásának hiánya a nyelvi magban

A többbyte-os kódolású karakterláncok (például UTF-8 ) támogatása külön kiterjesztéseken keresztül valósul meg , mbstringés iconvkernel szinten nincs támogatás, azonban a PHP 4.2.0 óta lehetőség van a karakterláncokkal való munka standard funkcióinak felülírására, helyettesítve az mbstring analógjaival. A többbájtos kódolások támogatása az összes karakterlánc-függvényben az 5.4.0-s verzió (2012. március) óta elérhető.

A többszálú támogatás hiánya

A nyelv nem teszi lehetővé többszálú alkalmazások létrehozását, és nem támogatja az erőforrásokhoz való szinkronizált hozzáférést, azonban PCNTL kiterjesztéssel [63] valósul meg (az angol  process controlból ), de nem alkalmas konkrét problémák megoldására.

Bár a „becsületes” szálakhoz telepíthető a pthreads kiterjesztés, ehhez az értelmezőt a szálbiztonsági jelzővel kell lefordítani, és magát a kiterjesztést is lejáratták a párhuzamos javára (ugyanattól a szerzőtől).

Egy modernebb alternatíva a Swoole kiterjesztés használata.

Lásd még

Jegyzetek

  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. Verzió: 8.1.12 – 2022.
  5. Google Csoportok
  6. PHP: A PHP története - Kézikönyv
  7. https://fileinfo.com/extension/php
  8. 1 2 3 PHP: Előszó - Kézikönyv
  9. Rasmus Lerdorf | PHP a hormonokon – 2013.
  10. http://php.net/license/
  11. 1 2 3 PHP: A PHP története - Kézikönyv . Hozzáférés dátuma: 2009. január 18. Az eredetiből archiválva : 2009. február 1..
  12. ↑ PHP : Előszó – Kézikönyv  . Archiválva az eredetiből 2011. augusztus 21-én.
  13. 1 2 TIOBE szoftver: Tiobe Index . Letöltve: 2009. november 2. Az eredetiből archiválva : 2013. június 22.
  14. A PHP és a kapcsolódó  projektek története . Archiválva az eredetiből 2011. augusztus 21-én.
  15. PHP: Funkciók - Kézikönyv (2009. június 21.). Letöltve: 2009. november 13. Az eredetiből archiválva : 2011. augusztus 21..
  16. Rasmus Lerdorf. Kíváncsi vagyok, miért írják folyamatosan, hogy a PHP-t Perlben írták. Soha nem volt. #php  (angol) . @rasmus (2012. július 20.). Letöltve: 2019. január 8. Az eredetiből archiválva : 2018. január 3..
  17. Savelyeva N. 1. előadás: Bevezetés a PHP / PHP programozási nyelvbe. Archiválva : 2015. január 22., a Wayback Machine Intuit, 2005. ISBN 978-5-9556-0026-0
  18. Unicode támogatással átírt funkciók száma . Hozzáférés időpontja: 2007. január 19. Az eredetiből archiválva : 2007. január 19.
  19. A news.txt fájl a PHP 6 disztribúciójából (downlink) . Hozzáférés dátuma: 2007. január 19. Az eredetiből archiválva : 2008. december 12. 
  20. PHP 6 Current Done és Lemaradás . Letöltve: 2008. április 7. Az eredetiből archiválva : 2008. április 18..
  21. A 2005 decemberére tervezett változtatások teljes listája . Letöltve: 2006. augusztus 12. Az eredetiből archiválva : 2006. augusztus 12..
  22. Hogyan halt meg a PHP6 Archiválva 2011. október 13-án a Wayback Machine -nél // amiro.ru
  23. PHP RFC: A PHP következő kiadásának neve . Letöltve: 2015. március 28. Az eredetiből archiválva : 2017. július 3.
  24. PHP RFC: PHP 7.0 idővonal . Hozzáférés dátuma: 2015. március 28. Az eredetiből archiválva : 2015. március 17.
  25. ↑ A PHP 7 legmenőbb jellemzői : Űrhajók , Típusi tippek, 2X sebesség  . www.zend.com. Letöltve: 2017. július 6. Az eredetiből archiválva : 2017. július 8..
  26. PHP: Hírarchívum - 2015 . Hozzáférés időpontja: 2015. december 12. Az eredetiből archiválva : 2015. december 12.
  27. PHP: rfc:phpng . php.net . Hozzáférés időpontja: 2014. december 16. Az eredetiből archiválva : 2014. október 19.
  28. RFC: Return Types . php.net . Letöltve: 2015. március 28. Az eredetiből archiválva : 2017. július 17.
  29. RFC: Scalar Type Declarations . php.net . Letöltve: 2015. március 28. Az eredetiből archiválva : 2017. július 7..
  30. PHP: Új funkciók - Kézi . Letöltve: 2020. május 2. Az eredetiből archiválva : 2020. május 2.
  31. PHP: Hírarchívum - 2020 . Letöltve: 2020. november 29. Az eredetiből archiválva : 2020. október 13.
  32. A PHP 8 újdonságai - stitcher.io . Letöltve: 2020. május 3. Az eredetiből archiválva : 2020. május 19.
  33. PHP: rfc: union_types_v2 . Letöltve: 2020. május 3. Az eredetiből archiválva : 2020. április 1.
  34. PHP:rfc:jit . Letöltve: 2020. május 3. Az eredetiből archiválva : 2020. május 18.
  35. Dale Hirt – A PHP Microsoft támogatása Windows rendszeren archiválva 2020. július 16-án a Wayback Machine -nél 
  36. ↑ A Windows 10 nem támogatja a PHP -t. Archivált 2020. július 16-án a Wayback Machine  (orosz)
  37. A Microsoft nem támogatja a PHP 8.0 for Windows verzióját . Letöltve: 2020. július 16. Az eredetiből archiválva : 2020. július 17.
  38. PHP  készítése . PHP belső könyv. Letöltve: 2022. március 1. Az eredetiből archiválva : 2021. május 8..
  39. ↑ RE2C : Egy előretekintés-TDFA-n alapuló lexergenerátor  . Szoftver hatások. Letöltve: 2022. március 1. Az eredetiből archiválva : 2022. január 27.
  40. PHP: Visszahívási funkciók (Visszahívási funkciók) - Kézi . safe.php.net. Letöltve: 2019. február 27. Az eredetiből archiválva : 2019. február 28..
  41. PHP: Változóváltozók - Kézi . Letöltve: 2008. december 17. Az eredetiből archiválva : 2008. május 11..
  42. PHP: echo - Kézi . Hozzáférés dátuma: 2010. január 14. Az eredetiből archiválva : 2009. február 24.
  43. ↑ Nyilvánvalóan a C++ nyelvből kölcsönzött , ahol ez a hatókör megadásának bináris alakja , egy vele egy konstrukció, egy minősített név , jelen esetben egy konstans.
  44. http://php.net/manual/en . Letöltve: 2010. március 25. Az eredetiből archiválva : 2010. június 12.
  45. PHP: Alapszintű memóriakezelés – Kézikönyv (2009. november 13.). Letöltve: 2009. november 17. Az eredetiből archiválva : 2011. augusztus 21..
  46. PHP: php.ini direktívák – Kézikönyv  ( 2009. november 6.). Letöltve: 2009. november 13. Az eredetiből archiválva : 2011. augusztus 21..
  47. PHP: php.ini direktívák listája – Kézikönyv  ( 2009. november 6.). Letöltve: 2009. november 13. Az eredetiből archiválva : 2011. augusztus 21..
  48. PHP: PHP használata a parancssorban – Kézikönyv (2009. június 21.). Letöltve: 2009. november 13. Az eredetiből archiválva : 2011. augusztus 21..
  49. 1 2 3 4 PHP Easter Egg  . Letöltve: 2009. november 16. Az eredetiből archiválva : 2011. augusztus 21..
  50. HipHop PHP-hez: Gyors mozgás
  51. A Facebook megnyitotta a kódot egy nagy teljesítményű PHP fordítóhoz . Letöltve: 2010. február 3. Az eredetiből archiválva : 2010. február 6..
  52. Pavel Durov és munkatársai kifejlesztették a PHP továbbfejlesztett verzióját . Letöltve: 2014. január 2. Az eredetiből archiválva : 2013. december 12..
  53. Licenc szövege 
  54. A projekt kísérleti szakaszban van
  55. A projekt kísérleti szakaszban van. Legújabb, 1.3.1-es verzió (2020 júliusától)
  56. jphp-group/  jphp . GitHub. Letöltve: 2018. november 18. Az eredetiből archiválva : 2018. október 5..
  57. PHP fordító teljesítménye . Letöltve: 2010. március 1. Az eredetiből archiválva : 2010. február 26..
  58. A Komodo IDE egy professzionális fejlesztési környezet Perl, Python, Tcl | ActiveState (lefelé irányuló kapcsolat) . Letöltve: 2011. november 22. Az eredetiből archiválva : 2008. december 20.. 
  59. Ingyenes regisztráció biztosított a volt Szovjetunió állampolgárai számára
  60. PHP támogatás a KDevelop 4-hez (és végül a Quanta+-hoz) | Millian Wolff . Hozzáférés dátuma: 2010. december 11. Az eredetiből archiválva : 2011. január 2..
  61. Személyzet  _ _ Letöltve: 2020. augusztus 1. Az eredetiből archiválva : 2020. június 2.
  62. ↑ Küldetés és felépítés  . Letöltve: 2020. augusztus 1. Az eredetiből archiválva : 2020. augusztus 1..
  63. PCNTL . Hozzáférés dátuma: 2012. január 23. Az eredetiből archiválva : 2012. január 17.

Irodalom

  • Matt Zandstra. PHP: Objects, Patterns and Practices = PHP Objects, Patterns and Practice, Third Edition. — 3. kiadás. - M . : " Williams ", 2010. - S. 560. - ISBN 978-5-8459-1689-1 .
  • Christian Dari, Emilian Balanescu. PHP és MySQL: Online áruház építése = A PHP és a MySQL e-kereskedelem kezdete: Kezdőtől profivá. - M . : " Williams ", 2010. - ISBN 978-5-8459-1602-0 .
  • Jason Langstorf. PHP és jQuery szakembereknek = Pro PHP és jQuery. - M . : " Williams ", 2010. - S. 352. - ISBN 978-5-8459-1693-8 .
  • Quentin Zervas. Web 2.0: Alkalmazások készítése PHP-val = Gyakorlati web 2.0 alkalmazások PHP-vel. - M . : " Williams ", 2009. - S. 544. - ISBN 978-5-8459-1590-0 .
  • Kuznyecov Maxim, Szimdjanov Igor. PHP 5/6. - Szentpétervár. : " BHV-Petersburg ", 2009. - S. 1024. - ISBN 978-5-9775-0304-4 .
  • Kuznyecov Maxim, Szimdjanov Igor. Objektum orientált programozás PHP-ben. - Szentpétervár. : " BHV-Petersburg ", 2007. - S. 608. - ISBN 978-5-9775-0142-2 .
  • Ed Lecky-Thompson, Alec Kove, Stephen Nowitzki, Hyao Eyde-Goodman. PHP 5 szakembereknek = Professzionális PHP 5. - M . : " Dialektika ", 2006. - S. 608. - ISBN 0-7645-7282-2 .
  • Kuznyecov Maxim, Szimdjanov Igor. PHP bemutató 5/6. - 3. kiadás, átdolgozva. és további - Szentpétervár. : " BHV-Petersburg ", 2009. - P. 672. - ISBN 978-5-9775-0409-6 .
  • Kuznyecov Maxim, Szimdjanov Igor. PHP. Weboldalak létrehozásának gyakorlata. - 2. kiadás átdolgozva és további - Szentpétervár. : " BHV-Petersburg ", 2008. - S. 1264. - ISBN 978-5-9775-0203-0 .
  • Kuznyecov Maxim, Szimdjanov Igor. PHP rejtvények a hackerek számára. - 2. kiadás átdolgozva és további - Szentpétervár. : " BHV-Petersburg ", 2008. - P. 544. - ISBN 978-5-9775-0204-7 .
  • Kuznyecov Maxim, Szimdjanov Igor. PHP példákkal. - 2. kiadás átdolgozva és további - Szentpétervár. : " BHV-Petersburg ", 2011. - P. 400. - ISBN 978-5-9775-0445-4 .
  • Luke Welling, Laura Thomson. Webes alkalmazások fejlesztése PHP és MySQL segítségével. - 5. kiadás - Szentpétervár. : " Dialektika ", 2019. - S. 768. - ISBN 978-5-9908911-9-7 .
  • Luke Welling, Laura Thomson. PHP és MySQL webfejlesztés. – ötödik kiadás. - " Addison-Wesley ", 2017. - P. 687. - ISBN 978-0-321-83389-1 .
  • Zandstra M. PHP. Objektumok, minták és programozási technikák. - 4. kiadás - Szentpétervár. : " Dialektika ", 2015. - S. 576. - ISBN 978-5-8459-1922-9 .
  • Zandstra M. PHP. Objektumok, minták és programozási technikák. - 5. kiadás - Szentpétervár. : " Dialektika ", 2019. - S. 736. - ISBN 978-5-907144-54-5 .
  • Zandstra M. PHP objektumok, minták és gyakorlat . — 5. kiadás. - " Apress ", 2016. - S.  583 . — ISBN 978-1-4842-1995-9 .
  • Nixon R. Dinamikus webhelyek készítése PHP, MySQL, JavaScript, CSS és HTML5 segítségével. - 4. kiadás - Szentpétervár. : " O'Reilly Bestsellers ", 2016. - P. 768. - ISBN 978-5-496-02146-3 .
  • Ulman, Larry. PHP és MySQL: online áruházak létrehozása. - 2. kiadás - Szentpétervár. , 2015. - S. 544. - ISBN 978-5-8459-1939-7 .
  • Kuznetsov M., Simdyanov I. Önkezelési kézikönyv PHP 7. - 2. kiadás - Szentpétervár. , 2018. - P. 448. - ISBN 978-5-9775-3817-6 .

Linkek