PHP 7.4 ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల

ఒక సంవత్సరం అభివృద్ధి తర్వాత సమర్పించారు ప్రోగ్రామింగ్ భాష విడుదల PHP 7.4. కొత్త బ్రాంచ్‌లో కొత్త ఫీచర్ల శ్రేణి, అలాగే అనుకూలతను విచ్ఛిన్నం చేసే అనేక మార్పులు ఉన్నాయి.

కీ మెరుగుదలలు PHP 7.4లో:

  • టైప్ చేసిన లక్షణాలు - తరగతి లక్షణాలు ఇప్పుడు టైప్ డిక్లరేషన్‌లను కలిగి ఉంటాయి, ఉదాహరణకు:

    తరగతి వినియోగదారు {
    పబ్లిక్ int $id;
    పబ్లిక్ స్ట్రింగ్ $పేరు;
    }

  • సంక్షిప్తీకరించబడింది విలువ ఆధారంగా స్కోప్ బైండింగ్‌తో “fn(parameter_list) => expr” ఫంక్షన్‌లను నిర్వచించడానికి సింటాక్స్. ఉదాహరణకు, “fn($x) => $x + $y” అనేది “$fn2 = ఫంక్షన్ ($x) ఉపయోగం ($y) {రిటర్న్ $x + $y;}”);
  • షార్ట్‌హ్యాండ్ అసైన్‌మెంట్ ఆపరేటర్ "??=" ఇది డిఫాల్ట్ విలువను నిర్వచించడానికి ఉపయోగించవచ్చు ("a ??= b" అనేది "a = a ?? b" లాగా ఉంటుంది, "a" నిర్వచించబడితే దాని విలువ నిల్వ చేయబడుతుంది మరియు దానిని నిర్వచించకపోతే విలువ "b" కేటాయించబడింది );
  • పరిమితం చేయబడింది అవకాశం ఉత్పన్నమైన రిటర్న్ రకాల్లో రకాల వారసత్వ సోపానక్రమాన్ని సంరక్షించడం లేదా ఉత్పన్నమైన ఆర్గ్యుమెంట్ రకాల్లో అసలైన రకాల సోపానక్రమాన్ని రివర్స్ చేసే సామర్థ్యం (సహజీవనం రిటర్న్ రకం మరియు వాదన రకం విరుద్ధంగా). కింది నిర్మాణాలను ఇప్పుడు PHPలో ఉపయోగించవచ్చు:

    తరగతి A {}
    తరగతి B A {}ని విస్తరించింది

    తరగతి నిర్మాత {
    పబ్లిక్ ఫంక్షన్ పద్ధతి(): A {}
    }
    తరగతి చైల్డ్ ప్రొడ్యూసర్ ప్రొడ్యూసర్‌ని పొడిగించింది {
    పబ్లిక్ ఫంక్షన్ పద్ధతి(): B {}
    }

  • “...$var” శ్రేణుల లోపల ఆపరేటర్‌ని అన్‌ప్యాక్ చేస్తోంది, అనుమతించడం కొత్త శ్రేణిని నిర్వచించేటప్పుడు ఇప్పటికే ఉన్న శ్రేణుల ప్రత్యామ్నాయాన్ని అమలు చేయండి;

    $భాగాలు = ['యాపిల్', 'పియర్'];
    $ఫ్రూట్స్ = ['అరటి', 'నారింజ', ...$భాగాలు, 'పుచ్చకాయ'];
    // ['అరటి', 'నారింజ', 'యాపిల్', 'పియర్', 'పుచ్చకాయ'];

  • అవకాశం సంఖ్యా అక్షరాలలో డీలిమిటర్‌లతో పెద్ద సంఖ్యల దృశ్యమాన ప్రాతినిధ్యం (1_000_000_00);
  • Поддержка బలహీనమైన లింకులు, ఇది ఒక వస్తువుకు సూచనను ఉంచడానికి మిమ్మల్ని అనుమతిస్తుంది, కానీ అనుబంధిత వస్తువును తొలగించకుండా చెత్త కలెక్టర్‌ను నిరోధించవద్దు;
  • కొత్త విధానం ఆబ్జెక్ట్ సీరియలైజేషన్ (Serializable మరియు __sleep()/__wakeup() కలయిక, ఇది Serializable ఇంటర్‌ఫేస్‌ను భర్తీ చేసింది, ఇది నిలిపివేయబడుతుంది;

    // వస్తువు యొక్క అన్ని స్థితులను కలిగి ఉన్న శ్రేణిని అందిస్తుంది;
    పబ్లిక్ ఫంక్షన్ __serialize(): శ్రేణి;

    // శ్రేణి నుండి వస్తువు యొక్క స్థితిని పునరుద్ధరిస్తుంది
    పబ్లిక్ ఫంక్షన్ __unserialize(శ్రేణి $డేటా): శూన్యం;

  • పద్దతి నుండి మినహాయింపులను విసిరేందుకు అనుమతించబడింది __toString();
  • ఆబ్జెక్ట్ కోడ్ కాష్‌ను ప్రీలోడ్ చేయడానికి మద్దతు జోడించబడింది. సెట్టింగ్ కోసం పారామీటర్ జోడించబడింది
    opcache.preload, దీని ద్వారా మీరు PHP స్క్రిప్ట్‌ను పేర్కొనవచ్చు, అది సర్వర్ ప్రారంభమైనప్పుడు కంపైల్ చేయబడుతుంది మరియు రన్ అవుతుంది. ఈ స్క్రిప్ట్ ఇతర ఫైల్‌ల ఆప్‌కోడ్‌ను నేరుగా చేర్చడం ద్వారా లేదా opcache_compile_file() ఫంక్షన్‌ని ఉపయోగించడం ద్వారా లోడ్ చేయగలదు;

  • కాస్టాగ్నోలి బహుపదిని ఉపయోగించి చెక్‌సమ్‌లను లెక్కించడానికి హాష్ ఎక్స్‌టెన్షన్‌కు crc32c ఫంక్షన్ జోడించబడింది;
  • PHP లిబార్గాన్ లేకుండా నిర్మించబడితే, సోడియం లైబ్రరీ అమలులో, పాస్‌వర్డ్ హాషింగ్ పద్ధతులు argon2i మరియు argin2id కోసం password_hash() ఫంక్షన్‌కు మద్దతు జోడించబడింది;
  • str_split() మాదిరిగానే mb_str_split() ఫంక్షన్ జోడించబడింది, కానీ బైట్‌లతో కాకుండా బహుళ-బైట్ స్ట్రింగ్‌లోని అక్షర స్థానాలతో పనిచేస్తుంది;
  • స్ట్రిప్_ట్యాగ్స్() ఫంక్షన్ ఇప్పుడు ట్యాగ్ పేర్లతో శ్రేణిని పాస్ చేయగల సామర్థ్యాన్ని కలిగి ఉంది, అనగా. స్ట్రిప్_ట్యాగ్‌లకు బదులుగా ($str, ‘’) మీరు ఇప్పుడు స్ట్రిప్_ట్యాగ్‌లను పేర్కొనవచ్చు($str, ['a', 'p']);
  • proc_open() అనేది స్ట్రింగ్‌లో కాకుండా శ్రేణిలో జాబితా చేయడానికి ఆపరాండ్‌లను అనుమతిస్తుంది మరియు శూన్య ఫైల్ డిస్క్రిప్టర్‌కు థ్రెడ్ దారి మళ్లింపు మరియు మద్దతును కూడా అందిస్తుంది;

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

    // షెల్‌లో 2>&1 లాగా
    proc_open($cmd, [1 => ['పైప్', 'w'], 2 => ['రీడైరెక్ట్', 1]], $పైప్స్);

    // షెల్‌లో 2>/dev/null లేదా 2>nul లాగా
    proc_open($cmd, [1 => ['పైప్', 'w'], 2 => ['శూన్య']], $ పైప్స్);

  • Firebird/Interbase, Recode మరియు WDDX పొడిగింపులు ప్రాథమిక పంపిణీ నుండి మినహాయించబడ్డాయి. ఈ పొడిగింపులు ఇప్పుడు PECL ద్వారా పంపిణీ చేయబడ్డాయి;
  • వర్గానికి బదిలీ చేయబడింది కాలం చెల్లిన కుండలీకరణాలు లేకుండా సమూహ టెర్నరీ ఆపరేటర్‌లు, కర్లీ బ్రేస్‌లను (“$var{$idx}”) ఉపయోగించి శ్రేణి మూలకాలు మరియు స్ట్రింగ్‌లను యాక్సెస్ చేయడం, is_real() ఫంక్షన్ మరియు రియల్‌కి ప్రసారం చేయడం, పేరెంట్ క్లాస్ లేకుండా పేరెంట్ కీవర్డ్‌ని ఉపయోగించడం, parameter allow_url_include కాన్ఫిగరేషన్‌లు వంటి లక్షణాలు , వస్తువులపై array_key_exists()ని ఉపయోగించడం.

    విధులు get_magic_quotes_gpc(), get_magic_quotes_runtime(), మరియు
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    ఫంక్షన్లలో తప్పు చిహ్నాలను ప్రాసెస్ చేయడానికి ప్రయత్నించినప్పుడు వాడుకలో లేని ఫీచర్ యొక్క ఉపయోగం గురించి హెచ్చరిక అందించబడింది
    base_convert(), bindec(), octdec() మరియు hexdec(), మరియు mb_ereg_replace()లో నాన్-స్ట్రింగ్ నమూనాను పేర్కొన్నప్పుడు.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి