PHP 8 నవంబర్ 2020 చివరలో విడుదలైంది. అదనపు ఫీచర్లు మరియు పనితీరు మెరుగుదలలతో భాషను నవీకరించే కొత్త కొత్త వెర్షన్ ఇది.

ఈ వ్యాసంలో మేము PHP 8 అందించే ఎనిమిది ప్రధాన మెరుగుదలలను సమీక్షిస్తాము. చేర్పులు మరియు మార్పుల యొక్క పూర్తి జాబితాను అధికారిక డాక్యుమెంటేషన్‌లో చూడవచ్చు. డాక్యుమెంటేషన్ PHP 7.4 నుండి ప్రాజెక్టులను అప్‌గ్రేడ్ చేసేటప్పుడు ఉపయోగం కోసం సమగ్ర మైగ్రేషన్ గైడ్‌ను కలిగి ఉంటుంది.

1. గుణాలు

ఇతర భాషలలో ఉల్లేఖనాలు అని కూడా పిలువబడే గుణాలు, బేస్ కోడ్‌కు మెటాడేటాను జోడించడానికి ఒక యంత్రాంగాన్ని అందిస్తాయి. తరగతులు, పద్ధతులు, విధులు మరియు లక్షణాలతో లక్షణాలను ఉపయోగించవచ్చు. అనేక PHP 7 ప్రాజెక్టులు అనుసరించిన డాక్‌బ్లాక్ విధానం కంటే అవి పనిచేయడం సులభం.

గుణాలు సాధారణ తరగతులుగా నిర్వచించబడతాయి, ఇవి PHP అంతర్నిర్మితంతో ఉల్లేఖించబడతాయి Attribute గుణం:

#[Attribute]
class CloudSavvyAttribute {
 
    protected string $value;
 
    public function __construct(string $value) {
        $this ->; value = $value;
    }
 
    public function getValue() : string {
        return $this ->; value;
    }
 
}

అప్పుడు వాటిని మీ కోడ్‌బేస్‌లోని ఎంటిటీలకు జతచేయవచ్చు:

#[CloudSavvyAttribute("Example")]
class CloudSavvyClass {
    // ...
}

లక్షణాలు ప్రతిబింబం API ద్వారా తిరిగి పొందబడతాయి. తరగతి, పద్ధతి లేదా ఇతర కోడ్‌బేస్ భాగంపై నిర్వచించిన లక్షణాలను మీరు పరిశీలించవచ్చు మరియు నిర్మించవచ్చు. ఫ్రేమ్‌వర్క్‌లు మరియు లైబ్రరీలలో గుణాలు మరింత ఉపయోగకరంగా ఉంటాయి, ఇక్కడ అవి రూట్ డెఫినిషన్స్ మరియు డిపెండెన్సీ ఇంజెక్షన్ లింక్‌లు వంటి అనువర్తన భాగాల యొక్క ఒక-సమయం మ్యాపింగ్‌ను సంగ్రహించడంలో సహాయపడతాయి.

2. పేరు పెట్టబడిన విషయాలు

శ్రేణి లాంటి నిర్మాణాన్ని ఉపయోగించి పద్ధతులు మరియు విధులకు పారామితులను పంపించడానికి పేరున్న వాదనలు మిమ్మల్ని అనుమతిస్తాయి. ఇది ఐచ్ఛిక పారామితులను దాటవేయడం మరియు వాటిని క్రమం తప్పకుండా దాటవేయడం సులభం చేస్తుంది.

function foo(?string $a=null, ?string $b=null, ?string $c=null) : void;

PHP 7 లో, విలువను దాటినప్పుడు పై ఫంక్షన్‌ను పిలుస్తుంది "demo" కోసం $c కింది కాల్ అభ్యర్థించారు:

PHP 8 లో, మీరు బదులుగా ఈ క్రింది వాక్యనిర్మాణాన్ని ఉపయోగించవచ్చు:

ఇది చాలా ఐచ్ఛిక వాదనలతో ఫంక్షన్ కాల్‌లను తక్కువ పునరావృతం చేస్తుంది మరియు నిర్వహించడం సులభం చేస్తుంది.

ప్రారంభ విలువలతో తరగతి లక్షణాలను జనాభా చేయడం అనేది కన్స్ట్రక్టర్ యొక్క చాలా తరచుగా పాత్రలలో ఒకటి. PHP 7 కోడ్ స్థావరాలలో కింది వాటికి సమానమైన కోడ్ సాధారణం:

class Example {
 
    protected ?string $Property;
 
    public function __construct(?string $Property=null) {
        $this ->; Property = $Property;
    }
 
}

కన్స్ట్రక్టర్ ప్రాపర్టీ ప్రమోషన్ కోసం PHP 8 మద్దతును జతచేస్తుంది, ఇది సంక్షిప్త వాక్యనిర్మాణం, ఇది కన్స్ట్రక్టర్ సంతకంలో ఆస్తి నిర్వచనం, రకం స్పెసిఫికేషన్ మరియు ఇన్లైన్ జనాభాను కలపడానికి మిమ్మల్ని అనుమతిస్తుంది. పై ఉదాహరణను ఈ క్రింది విధంగా తిరిగి వ్రాయవచ్చు:

class Example {
    public function __construct(
        protected string $Property=null
    )
}

ఈ శైలి పునరావృతం తొలగిస్తుంది. దీన్ని ఉపయోగించడం ద్వారా భవిష్యత్తులో అదనపు కన్స్ట్రక్టర్ లక్షణాలను జోడించడం సులభం అవుతుంది.

4. యూనియన్ రకాలు

PHP 8 తో PHP రకం వ్యవస్థ అభివృద్ధి చెందుతూనే ఉంది. రకాలను రెండు లేదా అంతకంటే ఎక్కువ రకాల “యూనియన్” గా సూచించడం ఇప్పుడు సాధ్యమే, ఇక్కడ టైప్ విలువ యూనియన్‌లోని ఏదైనా రకము నుండి పొందవచ్చు.

public function foo(string|int $bar) : int|float;

పైన పేర్కొన్న ఉదాహరణలో, ది foo() ఫంక్షన్ తీగలను మరియు పూర్ణాంకాలను అంగీకరిస్తుంది. ఇది పూర్ణాంకం లేదా ఫ్లోట్‌ను తిరిగి ఇస్తుంది.

ఆచరణలో, లక్షణాలు మరియు పద్ధతి పారామితులకు వర్తించినప్పుడు ఈ నైపుణ్యం చాలా ఉపయోగకరంగా ఉంటుంది – ఇది వివిధ రకాల ఇన్పుట్ రకాలను అంగీకరించడానికి మరియు బాగా నిర్వచించబడిన ఒకే అవుట్పుట్ రకానికి సాధారణీకరించడానికి మంచి మార్గం.

5. సుదూర వ్యక్తీకరణ

కొత్త match వ్యక్తీకరణ బాగా తెలిసినవారికి సురక్షితమైన ప్రత్యామ్నాయం switch. దీనికి ఉపయోగం అవసరం లేదు case ఉంది break ప్రకటనలు, మిశ్రమ పరిస్థితులకు మద్దతు ఇస్తుంది మరియు క్రొత్త కోడ్ కోడ్‌ను చొప్పించడానికి బదులుగా విలువను అందిస్తుంది. కాబట్టి టైప్ బలవంతం నిలిపివేయబడింది 1.0 (ఫ్లోట్) కి సమానంగా పరిగణించబడదు "1.0" (స్ట్రింగ్), ఉపయోగిస్తున్నప్పుడు కాకుండా switch.

ఇక్కడ ఒక సాధారణ PHP 7 ఉంది switch:

switch (1.0) {
    case 1.0:
        $result = "Float!";
        break;
    case "foo":
    case "bar":
        $result = "foobar!";
        break;
}

PHP 8 తో అదే కోడ్ ఎలా ఉంటుందో ఇక్కడ ఉంది:

$result = match (1.0) {
    1.0 =>; "Float!",
    "foo", "bar" =>; "foobar!"
}

మళ్ళీ, కొత్త విధానం మరింత సంక్షిప్తమైంది. గమనించదగ్గ విషయం ఏమిటంటే, మిశ్రమ పరిస్థితుల యొక్క వాక్యనిర్మాణ విలువలు శ్రేణిలో నిర్వచించబడవు, కానీ ఫంక్షన్‌ను పిలవడానికి సమానమైన సాధారణ కామాతో వేరు చేయబడిన సమితి.

6. “నల్సేఫ్” ఆపరేటర్

ఇతర భాషల నుండి అరువు తెచ్చుకున్న మరొక భావన, PHP 8 ఇప్పుడు ఆటోమేటిక్ షార్టింగ్‌తో ఇన్లైన్ శూన్య తనిఖీకి మద్దతు ఇస్తుంది. మీరు తిరిగి వచ్చే నియంత్రణల గొలుసును నిర్మించవచ్చు null, ఏదైనా మూలకం యొక్క మూల్యాంకనం విఫలమైనప్పుడు.

PHP 7 లో:

$photo = null;
if ($user !== null) {
    if ($user ->; profile !== null) {
        if ($user ->; profile ->; getPhoto() !== null) {
            $photo = $user ->; profile ->; getPhoto() ->; getPath();
        }
    }
}

మరియు PHP 8 లో:

$photo = $user? ->; profile? ->; getPhoto()? ->; getPath();

PHP 8 మళ్ళీ సరళమైన పరిష్కారాన్ని అందిస్తుంది, ఇది గూడును తొలగిస్తుంది. ఇది పరీక్షించడానికి మరియు నిర్వహించడానికి గణనీయంగా తక్కువ కోడ్‌ను ఇస్తుంది.

7. మరింత కఠినమైన రకం వ్యవస్థ

విలీన రకాలు PHP 8 రకం వ్యవస్థకు మరొక స్థాయి వశ్యతను ఎలా జోడిస్తాయో మేము ఇప్పటికే చూశాము.ఈ ప్రాంతంలో అనేక అదనపు మార్పులు ఏ రకమైన తనిఖీని వర్తింపజేస్తాయో కఠినత మరియు అనుగుణ్యతను పెంచుతాయి.

తీగలకు మరియు సంఖ్యలకు మధ్య పోలికలు ఇప్పుడు ఆరోగ్యంగా ఉన్నాయి. 0 (పూర్ణాంకం) ఇకపై సమానం కాదు "" (ఖాళీ స్ట్రింగ్) మరియు పోలికలు 123 == "123abc" ఇప్పుడు రేట్ చేయండి a false, లేదు true. లెగసీ ప్రాజెక్టుల అనుకూలతను నిర్ధారించడానికి కొన్ని పని అవసరం అయినప్పటికీ, ఈ మార్పులు బేస్ కోడ్‌లోని పోలిక లోపాల అవకాశాన్ని తగ్గించడంలో సహాయపడతాయి.

రకం వ్యవస్థ కూడా స్పష్టంగా పొందింది mixed టైప్ చేయండి (ఏ రకమైన విలువ అయినా అనుకూలంగా ఉందని సూచించడానికి), అలాగే ఫైల్ static రిటర్న్ రకం (ఇది చివరి స్టాటిక్ బైండింగ్‌కు మద్దతు ఇస్తుంది). మరెక్కడా, స్ట్రోక్‌లలోని నైరూప్య పద్ధతి సంతకాలు ఇప్పుడు సరిగ్గా ధృవీకరించబడ్డాయి.

మొత్తంమీద, ఈ మార్పులు గట్టిగా టైప్ చేసిన ప్రోగ్రామింగ్‌కు PHP యొక్క మద్దతును అందిస్తాయి. టైప్ హింటింగ్ యొక్క స్థిరమైన ఉపయోగం బలహీనంగా టైప్ చేసిన భాషలలో ఉనికిలో ఉన్న అనేక దోషాలను తొలగిస్తుంది, డెవలపర్‌లకు కోడ్ ఉద్దేశించిన విధంగా పనిచేస్తుందని మరింత విశ్వాసం ఇస్తుంది.

8. JIT

మా జాబితాలోని చివరి అంశం భాషా లక్షణం కంటే తెరవెనుక సామర్ధ్యం. PHP 8 జస్ట్-ఇన్-టైమ్ సంకలనానికి మద్దతును జోడిస్తుంది, ఇది పనితీరును గణనీయంగా మెరుగుపరుస్తుంది.

పునరావృత పనులను హోస్ట్ చేసే దీర్ఘకాలిక స్క్రిప్ట్‌లు JIT సంకలనం నుండి ఎక్కువగా ప్రయోజనం పొందుతాయి. PHP సాధారణంగా కనిపించే వెబ్ అనువర్తనాల్లో మెరుగుదల తక్కువగా ఉంటుందని బెంచ్‌మార్క్‌లు సూచిస్తున్నాయి. JIT యొక్క అదనంగా PHP ప్రోగ్రామింగ్ యొక్క ఇతర రంగాలలోకి విస్తరించడానికి సహాయపడుతుంది, భాష యొక్క మొత్తం ఆకర్షణ మరియు పాండిత్యమును మెరుగుపరుస్తుంది.

ఫైల్‌లోని క్రొత్త సెట్టింగ్‌లను ఉపయోగించి JIT తప్పనిసరిగా ప్రారంభించబడాలి php.ini కాన్ఫిగరేషన్ ఫైల్. అందుబాటులో ఉన్న విలువలు మరియు వాటి ప్రభావాలపై వివరణాత్మక గైడ్ డాక్యుమెంటేషన్‌లో చూడవచ్చు; అయితే, సాధారణ డిఫాల్ట్‌గా, మేము ఈ క్రింది వాటిని సిఫార్సు చేస్తున్నాము:

<code>opcache.enable=1
opcache.jit_buffer_size=100M
opcache.jit=1255</code>

ముగింపు

మేము PHP 8 లోని ఎనిమిది ముఖ్యమైన చేర్పులు మరియు మార్పులను మాత్రమే చూశాము. మీరు మీ ప్రాజెక్టులలో PHP 8 ను ఉపయోగించడం ప్రారంభించడానికి ముందు అధికారిక విడుదల నోట్లను చదవడం విలువైనది, ఎందుకంటే మేము ఇక్కడ కవర్ చేయలేకపోయిన అనేక ఇతర చిన్న లక్షణాలు ఉన్నాయి.

చాలా మార్పులు వెనుకబడిన అనుకూలంగా ఉన్నప్పటికీ, సంభావ్య ఉపాయాలలో టైప్ సిస్టమ్ మెరుగుదలలు మరియు ప్రామాణిక లైబ్రరీలో మార్పులు ఉన్నాయి. మీరు PHP డాక్యుమెంటేషన్ సైట్‌లో పూర్తి మైగ్రేషన్ గైడ్‌ను కనుగొనవచ్చు.

Source link