A PHP 8 hivatalosan is megjelent általános felhasználók számára 2020. november 26-án.
Ez az új frissítés számos hatékony funkciót és optimalizálást hoz a nyelvbe. Bár sok RFC-t már elfogadtak és bevezettek, itt az ideje, hogy elmerüljünk a legizgalmasabb kiegészítésekben, amelyek gyorsabbá és biztonságosabbá tették a PHP-t.
Előfordulhat, hogy javítania kell a kódon, hogy az futhasson PHP 8-on. Ha naprakész volt az új kiadásokkal, a frissítés nem lehet túl nehéz, mert a törést okozó módosítások többsége a 7.x-ben már elavult volt. verziók. És ne aggódjon – ez a cikk felsorolja ezeket az elévüléseket.
Az áttörő változásokon kívül a sebesség mellett a PHP 8.0 új funkciókat is kínál, mint például a régóta várt JIT fordító, szakszervezeti típusok, attribútumok és még sok más. Ezeket is megnézzük.
Ne vesztegessen időt a szervereken
A DreamHost kezeli Ön helyett a szerverkezelést, így Ön a nagyszerű alkalmazások létrehozására és ügyfelei elégedettségének megőrzésére összpontosíthat.
PHP 8 funkciók, amelyek javítják a teljesítményt
Régóta PHP-fejlesztőként öröm látni, hogy a PHP 8 olyan sok hasznos frissítést hozott, mint például a Named Arguments, amely lehetővé teszi az adatok érvényesítését egy függvénybe az argumentumnév alapján, nem pedig az argumentumsorrend alapján. És akkor a korábbi verziókban a szakszervezeti típusok deklarálásának egyetlen módja csak a phpdoc annotációs megjegyzésekben volt feltüntetve, de most már közvetlenül is.
Mindezek az attribútumok elképesztő fejlesztést jelentenek a reflektív API-hoz. Íme néhány nagyszerű új PHP 8 funkció:
Just-In-Time (JIT) fordító
A JIT már a 7.4-es verzió óta elérhető volt PHP-ben tesztelőeszközként, de teljesítménye és használhatósága sokat javult a PHP 8-as verziójában. Tervezés szerint a JIT letiltott módban elérhető volt a kísérletek elvégzésére és a PHP 7.4 többi változójának értékelésére.
A JIT növelni fogja a PHP 8 alkalmazások sebességét a PHP szkriptek fordításának kezelési módjának köszönhetően. A V8, HHVM, PyPy és más modern PHP JIT szempontjából nagyon egyszerű, de növeli a PHP teljes komplexitásának mértékét, az új hibák lehetőségét, valamint a létrehozási és karbantartási költségeket.
Most hivatalos PHP mechanizmus, az új és továbbfejlesztett JIT fordító lehetővé teszi az alkalmazáskód gyorsabb végrehajtását a hagyományos értelmezőhöz képest.
A nullsafe operátor
Ez az RFC az új nullsafe ?-> operátort javasolja teljes rövidzárlattal.
Ha már ismeri a null koalescing operátort, akkor már ismeri a gyengeségeit: a metódushívások nem működnek. Segítene, ha közbenső ellenőrzéseket végezne helyette, vagy ha választható segítőkre támaszkodna, amelyeket egyes keretrendszerek biztosítanak:
Megnevezett érvek
A megnevezett argumentumokkal a fejlesztők az értékek nevének meghatározásával adhatnak át értékeket egy függvénynek, így nem kell figyelembe vennie a sorrendjüket. Figyelmen kívül hagyhatja az opcionális paramétereket is. A megnevezett argumentumok megkönnyítik a kód megértését, mivel az argumentumok neve leíró jellegű.
Attribútumok
Az attribútumok, amelyeket más nyelveken általában megjegyzésként ismernek, lehetőséget biztosítanak metaadatok hozzáadására az osztályokhoz anélkül, hogy dokumentumblokkokat kellene elemezni.
Íme egy példa:
Match kifejezés
A PHP 8-nál tapasztalható kiemelkedő funkció, amely megkönnyítette a kódolást, az egyezési kifejezések. A fejlesztők ezentúl további kulcsszavak használata nélkül is képesek visszaadni egy értéket az adott bemenet alapján.
Nevezhetjük a switch kifejezés nagy testvérének: a match kifejezések visszaadhatnak értékeket, nincs szükségük break utasításokra, feltételeket kombinálhat, szigorú típus-összehasonlítást alkalmaz, és nem kényszerít ki semmilyen típust.
Ez így néz ki:
Öröklés privát módszerekkel
Korábban a PHP nyilvános, védett és privát módszereket használt ugyanazon öröklési ellenőrzések alkalmazására. Más szóval, a védett és a nyilvános metódusokkal azonos metódus aláírási szabályokat kell követni a privát módszereknek. Emiatt a gyerekosztályok nem használhatnának privát módszereket.
A PHP 8 frissített funkciója módosította a viselkedést, így ezeket az öröklődési ellenőrzéseket a továbbiakban nem végzik el a privát metódusokon. Ezen túlmenően, nem volt értelme a végső privát funkció használatának, így ez most figyelmeztetést jelentene:
Figyelem: A privát metódusok nem lehetnek véglegesek, mivel más osztályok soha nem írják felül őket
Gyenge térképek
A PHP 7.4-ben bevezetett WeakMap, RFC alapján, a PHP 8 WeakMap implementációt vezet be. A WeakMap olyan objektumokra hivatkozik, amelyek nem akadályozzák meg a szemétgyűjtést ezekből az objektumokból.
Bevezetik továbbá az entitásosztályokra való hivatkozásokat tartalmazó gyorsítótárakat, hogy javítsák az entitások közötti kapcsolatok teljesítményét, az ORM-ek példáját véve. Amíg ez a gyorsítótár hivatkozik rájuk, ezeket az entitásobjektumokat nem lehet szemétgyűjteni, még akkor is, ha a gyorsítótár az egyetlen dolog, amely hivatkozik rájuk.
Ha ez a gyorsítótárazási réteg ehelyett gyenge hivatkozásokat és leképezéseket használ, a PHP összegyűjti ezeket az objektumokat, amikor már semmi más nem hivatkozik rájuk. A gyenge térképek jobb, erőforrás-barátabb módot kínálhatnak ezen objektumok kezelésére, különösen az ORM-ek esetében, amelyek sok száz, ha nem ezret képesek kezelni egy kérésben. Így néznek ki a gyenge térképek, az RFC példájával:
Írjon megjegyzéseket a belső funkciókhoz
Ez egy régóta fennálló probléma volt, és a PHP korábbi verzióiban végrehajtott minden fejlesztésével végre megoldható volt. Ez azt jelenti, hogy a teljes típusinformáció tükröződni fog a belső funkciókban és módszerekben.
ext-JSON mindig elérhető
Már nem lehet PHP-t fordítani az engedélyezett JSON-bővítmény nélkül. Mivel a JSON-t olyan gyakran használják, ahelyett, hogy először a bővítmény létezését biztosítaná, a legjobb fejlesztők mindig számíthatnak rá, hogy ott van.
Konzisztens típushibák
A PHP-ben a felhasználó által definiált függvények TypeError-t dobnak, de a belső függvények nem. Ehelyett figyelmeztetéseket adnak ki, és nullát adnak vissza. A belső funkciók viselkedését a PHP 8-ban egységessé tették.
A @ operátor többé nem hallgatja el a végzetes hibákat
Ez a módosítás felfedhet olyan hibákat, amelyek a PHP 8 előtt rejtve voltak. Az éles kiszolgálókon győződjön meg arról, hogy a display_errors=Off beállítást választotta.
Alapértelmezett hibajelentési szint
Az E NOTICE és az E DEPRECATED kivételével minden helyett most E ALL. Ez azt jelenti, hogy sok korábban csendben figyelmen kívül hagyott hibát, de valószínűleg már létezett, mielőtt a PHP 8 felbukkant volna.
A névteres nevek egyetlen token
A PHP a névtér minden egyes részét (fordított perjellel \ választva) tokenek sorozataként értelmezi. Ez az RFC megváltoztatta ezt a viselkedést, ami azt jelenti, hogy a fenntartott nevek mostantól használhatók a névterekben.
Saner numerikus karakterláncok
Amikor számokat talál a karakterláncokban, a PHP típusú rendszer több okos dolgot is megkísérel. Ez átláthatóbbá és következetesebbé teszi a viselkedést.
Saner karakterlánc a számok összehasonlításához
A PHP 8-ban ez az RFC azt a nagyon furcsa esetet kezeli, amikor a 0 = = “foo” igazat eredményez. Számos más élpéldány létezik, mint ez, és ezeket az RFC javítja.
Stabil válogatás
A rendezési algoritmusok megbízhatatlanok voltak a PHP 8 előtt. Ez azt jelenti, hogy nem volt garancia az egyenlő elemek sorrendjére. Az összes rendezési függvény viselkedését a PHP 8 stabil rendezésre módosította.
Ne vesztegessen időt a szervereken
A DreamHost kezeli Ön helyett a szerverkezelést, így Ön a nagyszerű alkalmazások létrehozására és ügyfelei elégedettségének megőrzésére összpontosíthat.
Új PHP funkciók
Új str_contains() függvény
Egyesek azzal érvelhetnek, hogy már régen esedékes, de lényegében már nem kell a strops()-ra hagyatkoznunk, hogy megtudjuk, van-e másik karakterlánc a karakterláncon belül.
Új str_starts_with() és str_ends_with() függvények
Ez a két funkció már régóta esedékes, és mára a mag részét képezi.
Új fdiv() függvény
Az új fdiv() függvény hasonló képességekkel rendelkezik, mint az fmod() és intdiv() függvény, amely lehetővé teszi a 0-val való osztást. A hiba helyett az INF, -INF vagy NAN függvényt kapja, a forgatókönyvtől függően.
get_debug_type() függvény
Az új get_debug_type függvény mindig a valódi natív típusú változókat adja vissza. A natív típusneveket adja vissza, pl. int helyett integer, double helyett float.
A get_debug_type() függvény segít
- Hibabejelentés
- Hibakeresés
- Üzleti logika
Bemutatjuk a PHP 8 legújabb verzióját a DreamHost-en
Míg a DreamHost már bemutatta felhasználóinak a PHP 8.0-t, ez most minden új és meglévő fiók számára elérhető a csomagolási beállításokban. Erősen javasoljuk, hogy tartsa frissítve a PHP verzióját a nyelvbe bevezetett új funkciók miatt, és tartsa magát naprakészen a platformon, de még nem javasoljuk, hogy frissítsen PHP 8.x-re az élő éles szervereken, különösen, ha Laravel keretrendszert vagy bármely más PHP alapú CMS-t használnak. Ha Laravel és WordPress nélkül hoz létre új webalkalmazást, szabadon kipróbálhatja a PHP 8-at.
PHP-verziók váltása a DreamHost-en
Görgessen le az oldalsó menüben, és kattintson a Beállítások és csomagok elemre. Közvetlenül a tetején találhatók a PHP verzióhoz tartozó csomagok, amelyeket PHP 7.x-ről PHP 8.0-ra válthatunk.
Ahogy korábban említettük, erősen ajánlott, hogy ne frissítse, ha Laravel-keretrendszert vagy bármilyen PHP-alapú CMS élő webhelyet futtat. Ha új webalkalmazást hoz létre PHP-keretrendszer vagy PHP-alapú CMS nélkül, vagy olyan webhelyet futtat, amely nem fut PHP-alapú CMS-en, akkor nyugodtan frissítheti, de mindig óvatosan járjon el.
Válassza a PHP 8-at a legördülő menüből.
A frissítési folyamat néhány percet vesz igénybe. A szerver leállás nélkül frissül.
Ez az! A DreamHost Platform segítségével egyszerűen módosíthatja a PHP verzióját.
Ezután annak ellenőrzéséhez, hogy a PHP 8 valóban elérhető-e a szerveren, indítsa el a SSH terminál a Fő hitelesítő adatok lapról, és jelentkezzen be hitelesítő adataival.
Használja a php -v parancsot a telepített PHP verzió ellenőrzéséhez.
Végső gondolatok
Azta! Némi tapasztalat volt ennek a cikknek a fordítása és megírása, ez egy jelentős frissítés, és törést okozó változások és a PHP 8 újdonságai lesznek. A legjobb, ha megnézi a Frissítés dokumentum teljes listáját a hibás módosításokról.
A 7. * korábbi verzióiban azonban ezek közül a feltörő módosítások közül több elavult, így ha az évek során naprakész volt, a PHP 8-ra való frissítés nem lehet olyan nehéz.
Véleményem szerint a PHP 8 az eddigi legjobb frissítés. Nemcsak a kódolási módszereket és struktúrát könnyítette meg, hanem a futásidő helyett a kód fordítási idejét is optimalizálta, ami a platform gyorsabb teljesítményét eredményezte. A felhasználói felület kis frissítései is több értéket és felhasználói interakciót hoztak a nyelvbe.
Néhány általános változtatás is történt a nyelvben. Néhány előre betöltött függvény, mint például a create_function() és az every() el lett távolítva, míg néhány függvény mechanizmusa és működése módosult. Az új verzió minden kétséget kizáróan egy lépés a nyelv megtisztítása és a régóta várt és lényeges kiemelések és frissítések sokaságának kiadása felé.
Az alábbi megjegyzésekben tudassa velem, hogy mit gondol a PHP 8 megjelenéséről, és hogy ez milyen hatással lesz a webfejlesztési arénára.