Főoldal

"Mérnököt a mérnöktől"

A Schönherz Bázis összeköti az állást kereső és állást kínáló mérnököket.

CV küldés

Küldj önéletrajzot! Gyorsan, egyszerűen.
Megjegyzésbe írd be a pozíció nevét.
CV küldés

Iratkozz fel hírlevelünkre!

Hírek

PHP 7: Már itt is az ideje a váltásnak?
PHP 7: Már itt is az ideje a váltásnak?
Az elmúlt években a PHP kisebb kiadásai sorozatosan jelentős javulásokat hoztak a nyelv teljesítményében. A PHP körüli közösség profibbá vált, és számos eszközt tett elérhetővé a fejlesztők számára, ezzel fejlesztve a nyelv használatát, és az alkalmazások karbantarthatóságát. Fontos eseményként jelentették be a PHP 7 – a PHP 5 utódjának – tervezett november 12.-i megjelenését. Felmerül a kérdés, hogy miért számíthat ez fontos eseménynek. Pillantsunk be a PHP 7 motorháztetője alá!

Fedezd fel a történet első fejezetét: « “Nem, a PHP nem halt meg!” »


5-ről a 7-re: Egy különös átmenet

Az informatikusoknak gondjaik lennének a matematikával? Miután a Microsoft a Windows 8-ról a 10-re váltott, a PHP is úgy döntött hogy az aritmetika alapszabályait felrúgva a PHP 5-öt a PHP 7 fogja követni. Az ugrás kis kutatással megmagyarázható. 2004-ben – a PHP 5 megjelenése után – megkezdődött a 6-os verzió fejlesztése, azzal a fő céllal, hogy integrálják a Unicode-ot a nyelvbe, így lehetővé téve a speciális karakterek használatát. Unicode nélkül például nem tudnánk leírni, hogy: "I❤ PHP”.

Hibás döntések és a megcsappanó motiváció miatt, a fejlesztők 2010-ben kénytelenek voltak félbehagyni a munkát ezen a verzión. A prezentációjában Andrei Zmievski leírja, hogy milyen problémák vezettek a döntéshez. A fejlesztők a fontosabb javításokra koncentráltak, amelyeket 2014-ig a kisebb verziókba illesztettek.

Mikor a fejlesztők a következő nagyobb kiadás tervén dolgoztak, hamar felmerült a probléma, hogy mi is legyen a neve. (Itt megnézheted a vita részleteit). Számos cikk és könyv jelent meg időközben a 6-os verzióra vonatkozóan, amit végül nem adtak ki. Ez félreértésekhez vezethet a felhasználóknál, akik a legfrissebb verzióhoz keresnének segédanyagokat. Másrészt a fejlesztőközösség is pontot szeretett volna már tenni a kisiklott projekt végére, így elsöprő többséggel a PHP 7 megnevezésre szavaztak.

Az új verzió több mint másfél évnyi munka eredménye, és nehéz átfogó felsorolást adni az összes újításról. A cikkben a legfontosabbakról teszünk említést.


PHP 7: Kétszer gyorsabb az 5.6-nál

Gyakran jó dolog a konkurencia. 2011-ben a Facebook létrehozott egy PHP futtatómotort – a HHVM-et – amely futás közbeni fordítással (JIT) tudta növelni a nyelv sebességét. Ezen projekt alapján a fejlesztők hamar elkezdtek hasonló megoldásokat keresni közvetlenül a PHP-n belül.
Ezek összefoglaló neve lett a PHPNG (PHP New Generation). Az optimalizációk sok kód átírását igényelték, ezzel kikövezve az utat a JIT megoldások felé, emellett növelték a nyelv általános teljesítményét is. Éles helyzetben a PHP 7 majdnem 2-szer olyan gyors, mint a PHP 5. Ha hiszünk Rasmus Lerdorf (a PHP megalkotója) méréseinek, tavaly áprilisban a PHP elérte a HHVM teljesítményét, ezzel ösztönözve a HHVM fejlesztőit, hogy ideje visszatérni a projektjükhöz, ha az élen akarnak maradni.

Néhány blogger hamar kijelentette: az új PHP valójában nem több, mint a PHPNG. Való igaz hogy a PHPNG hatása jelentős, ugyanakkor ez csak egy része a teljes projektnek.


PHP 7: 5-ről a 7-re: Siker vagy bukás?

A PHP 7 érkezésével megszűnik néhány funkció amelyek a régebbi verziókban már elavultként voltak jelölve. Sok nem támogatott kiterjesztés megszűnik, köztük az ereg* kiterjesztések és a mysql kiterjesztés. Helyettük a PDO MySql vagy a mysqli kiterjesztések lesznek használhatóak.

Hogyha nem támogatott PHP funkciókat használsz – főleg amelyek adatbázisokhoz kapcsolódnak – ellenőrizd, hogy támogatja-e őket a PHP 7. A PHPNG megváltoztatta a kiterjesztések belső működését, és frissíteni kell őket, hogy működjenek PHP 7 alatt is. MongoDB-hez már van elérhető driver.

Hogy növelje a teljesítményt, a PHP most « absztrakt szintaxisfát » (AST) használ, lehetővé téve a kód optimalizálását futás közben is. Ehhez egy egységes eljárásra van szükség a tartalom olvasásakor. A PHP 5-ben a fordító leginkább balról jobbra olvas – néhány esetet kivéve – amikor változók jobbról balra kerülnek beolvasásra. A PHP 7-el megszűnnek ezek a kivételek. Minden kód balról jobbra kerül értelmezésre.

Vegyünk példaként a “$foo->$bar['baz']” változót. PHP 5-ben a változó értelmezése: “$foo->{$bar['baz']}”. PHP 7-ben az értelmezés “$foo->$bar” és a ($foo->$bar)['baz'] kerül először értelmezésre.
A változásnak valószínűleg nem lesz nagyobb hatása a programjaidon, ugyanakkor ne lepődj meg, ha hibákba botlasz ilyen szintaxissal.
Egy másik fontos változás – és szerintem jó hír – hogy a fatális hibákat mostantól kivételekként kezeli a nyelv. Így az ilyen hibákat közvetlenül a programban kezelheted, és kikerülhető a PHP alapértelmezett viselkedése. Akiknek már volt dolguk ilyen hibákkal, tudják miről beszélek!

Végre új foglalt szavak is kerültek a nyelvbe. Jó, ha tudod, a következő kifejezések már nem használhatóak az osztályok, namespace-ek vagy a trait-ek neveiben: int, float, bool, string, true, false, null, resource, object, scalar, mixed, numeric. Sok PHP keretrendszer wrapper-eket használ bizonyos adattípusokra, pl. stringekre. Ezeket át kell írni.

A fentiek nem fedik le a PHP 5.6-tal való kompatibilitás összes problémáját, de azt hiszem ezek a legfontosabbak. A teljes lista a PHP oldalán elérhető: http://php.net/manual/en/migration70.php. Ugyanakkor, még ha meg is tettünk minden elővigyázatosságot, semmi sem helyettesítheti a tesztelést valós körülmények között, pl. gyártás előtti tesztkörnyezetben.


Elkerülhető a fatal error, hála a skalár típushinteknek!

A PHP 7 funkciók új listája elég hosszú, hogy harcba szálljunk azokkal, akik szerint veszélyes a PHP a dinamikus típusossága miatt. A PHP – először a történetében – beépítette a nyelvbe a statikus változókat.

Akik a már meglévő programkódjaik miatt kezdenének pánikolni, megnyugodhatnak! Opcionálisan használható funkciókról van szó, melyek elérhetőek, ha kifejezetten szigorú típusosságra van szükség. Valószínűleg lesznek olyanok, akik szerint ez felesleges, de ez a legkevésbé sem igaz! A statikus változók segítségével a fordító olyan optimalizációkat végezhet el, amelyek lehetetlenek lennének a változók típusának előzetes ismerete nélkül. Mindemellett, ha a legjobb adatstruktúrát keresed, itt találsz egy remek konferenciát a témáról, Patrick Allaert előadásában. És mik a legújabb fejlemények az adattípusokról?

Két újdonság van: a skaláris típusdeklaráció és visszatérési típus deklarációja. Az előbbi a várt típus definiálása a függvény argumentumaiban. Hogyha helyesen adjuk meg a várt értéket, a PHP kivételt ad vissza. Például ha definiálnod kell egy függvényt, ami eloszt egymással két egész számot, már megteheted a lenti példa szerint.

Kód:


Eredmény:


A visszatérési típus deklarációjával megadhatod a függvényed várt kimeneti formátumát. Hasonlóan az előzőhöz, hogyha a függvényed hibás értéket ad vissza, a PHP kivételt fog dobni.

Kód:


Eredmény:


A statikus típusosság puristái szerint, ha be tudunk adni egy egész stringet egy ilyen függvénynek, annak egy hibát kellene eredményeznie. Tehát lehet, hogy csalódottak lesznek ettől az új funkciótól. Ugyanakkor a PHP megengedi a programozónak, hogy maga határozza meg a szigorúság mértékét. Ha a fájl elejéhez adjuk a “declare(strict_types=1) ;” sort, a PHP ebben az esetben is kivételt fog küldeni. Ez működik mind a visszatérési típus, mind az argumentumok meghatározásánál.

Kód:


Eredmény:


Mivel ezek a funkciók engedik a PHP fordítónak a futtatás optimalizálását, kár lenne nem használni őket. Persze nincs szükség újraírni az összes kódodat, ha PHP 7-re szeretnél váltani. A dinamikus típusság ugyanúgy megmaradt, és még mindig vannak helyzetek amikor jól használható.
Majdnem elfelejtettem: A PHP 7 támogatja az Unicode karaktereket a stringekben. A félbehagyott PHP 6-tól örökölt funkció végre bevezeti a nyelvet a 🐱-k korába.


CMS-ek és keretrendszerek: kik állnak készen?

Sok fejlesztő használ CMS-eket vagy keretrendszereket, ezáltal jobban koncentrálhatnak a tényleges munkahelyi feladatokra. A fejlesztőknek meg kell várni ezen keretrendszerek frissítését, ha át akarnak állni PHP 7-re, és kihasználni az előnyeit. Valószínűleg nem kell sokat várniuk. A PHP 7 csak azokat a funkciókat fogja tartalmazni, amelyek már a kora júliusban kiadott béta verzióban is megvoltak, és amit azon csapatok fejlesztettek, akik a CMS-eket és a keretrendszereket is fejlesztik.
Néhány csapat már be is jelentette hogy készek átállni PHP 7-re.. Köztük a Symfony-t fejlesztő csapat, augusztusban jelentette be hogy a 2.3, 2.6, 2.7-es – és a még meg nem jelent 3.0-ás verziójuk – támogatni fogja az új PHP-t. A Zend Framework csapata, a 2.4-es verziójuk óta készen áll, a Wordpress pedig az augusztusi 4.3 verzió óta kompatibilis.

A többiek a startvonalnál:
• A Drupal a 8-as verzióban építi be a támogatást, ami hamarosan meg is fog jelenni. (A Drupal 2 RC már elérhető).
• Jelenleg a Joomla egyik verziója sem támogatja a PHP 7-et (köszönhetően a String osztálynak), de a 3.5-ös verzió már kompatibilis lesz.
• A PrestaShop nem jelentett be semmit a PHP 7 támogatásával kapcsolatban, de nemrég vált elérhetővé a 1.1.6.2. negyedik RC verziója, amely telepíthető PHP 7-tel.

A 2015-ös év valószínűleg fordulópont a PHP számára, hiszen a 7-es verzióval elért teljesítménynövekedéssel már sok nyelvvel vetekedhet a sebességben. Beépíti a funkciókat amiket sok fejlesztő vár már régóta. Ugyanakkor a nyelv változásainak nincs akkora hatása, mint a PHP 4-ről a PHP 5-re való átálláskor, így nem szükséges átírni a programjaidat A-tól Z-ig! Talán már itt is az ideje, hogy elkezdj gondolkodni az átálláson….

Írta: Vincent Cassé 

(Forrás)

***
Ha Téged is érdekel PHP-s munkalehetőség, akkor tekintsd meg ezzel kapcsolatos állásajánlatunkat: Tapasztalt PHP fejlesztőt keresünk online média területre!


Schönherz Bázis – Jó mérnököt jó helyre!