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

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

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

  • తరగతిని చదవడానికి మాత్రమేగా గుర్తించగల సామర్థ్యం జోడించబడింది. అటువంటి తరగతులలోని లక్షణాలు ఒక్కసారి మాత్రమే సెట్ చేయబడతాయి, ఆ తర్వాత వాటిని మార్చలేరు. ఇంతకుముందు, వ్యక్తిగత తరగతి లక్షణాలు చదవడానికి మాత్రమే గుర్తించబడతాయి, కానీ ఇప్పుడు మీరు ఈ మోడ్‌ని అన్ని తరగతి లక్షణాల కోసం ఒకేసారి ప్రారంభించవచ్చు. తరగతి స్థాయిలో "చదవడానికి మాత్రమే" ఫ్లాగ్‌ను పేర్కొనడం వలన క్లాస్‌కు డైనమిక్‌గా జోడించబడకుండా లక్షణాలను నిరోధిస్తుంది. చదవడానికి మాత్రమే తరగతి పోస్ట్ {పబ్లిక్ ఫంక్షన్ __నిర్మాణం(పబ్లిక్ స్ట్రింగ్ $శీర్షిక, పబ్లిక్ రచయిత $రచయిత, ) {}} $post = కొత్త పోస్ట్(/* … */); $post->తెలియని = 'తప్పు'; // లోపం: డైనమిక్ ప్రాపర్టీని సృష్టించడం సాధ్యం కాదు పోస్ట్ ::$తెలియదు
  • "నిజం", "తప్పు" మరియు "శూన్యం" అనే ప్రత్యేక రకాలు జోడించబడ్డాయి, ఇవి ఒక చెల్లుబాటు అయ్యే విలువను మాత్రమే తీసుకోగలవు మరియు ఉదాహరణకు, లోపం ముగింపు ఫ్లాగ్ లేదా ఖాళీ విలువతో ఫంక్షన్‌ను అందించడానికి ఉపయోగించబడతాయి. ఇంతకుముందు, “నిజం”, “తప్పు” మరియు “శూన్య” అనేవి ఇతర రకాలతో కలిపి మాత్రమే ఉపయోగించబడేవి (ఉదాహరణకు, “స్ట్రింగ్|తప్పు”), కానీ ఇప్పుడు వాటిని విడిగా ఉపయోగించవచ్చు: ఫంక్షన్ alwaysFalse(): false { return false ; }
  • లోపం సమయంలో స్టాక్ ట్రేస్ అవుట్‌పుట్‌లో సున్నితమైన పారామితులను ఫిల్టర్ చేసే సామర్థ్యాన్ని అందిస్తుంది. సంభవించే లోపాల గురించి సమాచారాన్ని ఆటోమేటిక్‌గా థర్డ్-పార్టీ సర్వీస్‌లకు పంపినప్పుడు, సమస్యలను ట్రాక్ చేసే మరియు వాటి గురించి డెవలపర్‌లకు తెలియజేసినప్పుడు నిర్దిష్ట సమాచారాన్ని కత్తిరించడం అవసరం కావచ్చు. ఉదాహరణకు, మీరు ట్రేసింగ్ నుండి వినియోగదారు పేర్లు, పాస్‌వర్డ్‌లు మరియు ఎన్విరాన్‌మెంట్ వేరియబుల్‌లను కలిగి ఉన్న పారామితులను మినహాయించవచ్చు. ఫంక్షన్ పరీక్ష ($foo, #[\SensitiveParameter] $password, $baz ) {త్రో కొత్త మినహాయింపు('ఎర్రర్'); } పరీక్ష('foo', 'password', 'baz'); ఘోరమైన లోపం: గుర్తించబడని మినహాయింపు: పరీక్షలో లోపం లైన్ 8లో
  • లక్షణాలలో స్థిరాంకాలను నిర్వచించడానికి అనుమతించబడింది (లక్షణం, కోడ్‌ని తిరిగి ఉపయోగించుకునే విధానం). లక్షణంలో నిర్వచించబడిన స్థిరాంకాలను లక్షణాన్ని ఉపయోగించే తరగతి ద్వారా యాక్సెస్ చేయవచ్చు (కానీ లక్షణం పేరు ద్వారా కాదు). లక్షణం ఫూ {పబ్లిక్ కాన్స్ట్ కాన్స్టాంట్ = 1; పబ్లిక్ ఫంక్షన్ బార్(): int {రిటర్న్ సెల్:: స్థిరం; // ఫాటల్ ఎర్రర్ }} క్లాస్ బార్ {యూజ్ ఫూ; } var_dump(బార్:: స్థిరంగా); // 1
  • డిస్‌జంక్టివ్ నార్మల్ ఫారమ్‌లో (DNF, డిస్‌జంక్టివ్ నార్మల్ ఫారమ్) రకాలను పేర్కొనే సామర్థ్యం జోడించబడింది, ఇది రకాల యూనియన్ (రెండు లేదా అంతకంటే ఎక్కువ రకాల సేకరణలు) మరియు రకాల ఖండన (విలువలు అనేకం కిందకు వచ్చే రకాలు) కలపడానికి మిమ్మల్ని అనుమతిస్తుంది. ఏకకాలంలో రకాలు). క్లాస్ ఫూ {పబ్లిక్ ఫంక్షన్ బార్((A&B)|శూన్య $entity) { if ($entity === null) {శూన్యాన్ని తిరిగి ఇవ్వండి; } తిరిగి $entity; } }
  • నకిలీ యాదృచ్ఛిక సంఖ్యలు మరియు సీక్వెన్స్‌లను రూపొందించడానికి ఫంక్షన్‌లు మరియు తరగతులతో "రాండమ్" అనే కొత్త పొడిగింపు ప్రతిపాదించబడింది. మాడ్యూల్ ఆబ్జెక్ట్-ఓరియెంటెడ్ ఇంటర్‌ఫేస్‌ను అందిస్తుంది, క్రిప్టోగ్రఫీలో ఉపయోగించడానికి తగిన వాటితో సహా నకిలీ-రాండమ్ నంబర్‌లను రూపొందించడానికి వివిధ ఇంజిన్‌లను ఎంచుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు సహాయక విధులను అందిస్తుంది, ఉదాహరణకు, యాదృచ్ఛికంగా శ్రేణులు మరియు స్ట్రింగ్‌లను కలపడం, యాదృచ్ఛిక శ్రేణి కీలను ఎంచుకోవడం, మీ స్వంత స్వతంత్ర రాష్ట్రంతో అనేక జనరేటర్లను ఏకకాలంలో ఉపయోగించడం. $rng = $is_production ? కొత్త రాండమ్\ఇంజిన్\సెక్యూర్() : కొత్త రాండమ్\ఇంజిన్\Mt19937(1234); $randomizer = కొత్త రాండమ్\Randomizer($rng); $randomizer->shuffleString('foobar');
  • లొకేల్-ఇండిపెండెంట్ కేస్ మార్పిడి అమలు చేయబడింది. strtolower() మరియు strtoupper() వంటి విధులు ఇప్పుడు ఎల్లప్పుడూ ASCII పరిధిలోని అక్షరాల కేస్‌ను "C" లొకేల్‌కి సెట్ చేసినట్లుగా మారుస్తాయి.
  • కొత్త ఫంక్షన్‌లు జోడించబడ్డాయి: mysqli_execute_query, curl_upkeep, memory_reset_peak_usage, ini_parse_quantity, libxml_get_external_entity_loader, sodium_crypto_stream_xchacha20_xor_ic, openssl_cipher_key
  • కొత్త పద్ధతులు జోడించబడ్డాయి: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • తరగతిలో లక్షణాలను డైనమిక్‌గా సృష్టించగల సామర్థ్యం నిలిపివేయబడింది. PHP 9.0లో, క్లాస్‌లో మొదట్లో నిర్వచించబడని ప్రాపర్టీలను యాక్సెస్ చేయడం వలన లోపం ఏర్పడుతుంది (ErrorException). లక్షణాలను సృష్టించడం కోసం __గెట్ మరియు __సెట్ పద్ధతులను అందించే తరగతులు లేదా stdClassలో డైనమిక్ ప్రాపర్టీలు మార్పులు లేకుండా పని చేస్తూనే ఉంటాయి, దాచిన బగ్‌ల నుండి డెవలపర్‌ను రక్షించడానికి ఉనికిలో లేని లక్షణాలతో అవ్యక్తమైన పని మాత్రమే మద్దతు ఇస్తుంది. పాత కోడ్ యొక్క పనిని సంరక్షించడానికి, "#[AllowDynamicProperties]" లక్షణం ప్రతిపాదించబడింది, ఇది డైనమిక్ లక్షణాల వినియోగాన్ని అనుమతిస్తుంది.
  • "${var}" మరియు ${(var)} వ్యక్తీకరణలను ఉపయోగించి వేరియబుల్ విలువలను స్ట్రింగ్‌లలోకి ప్రత్యామ్నాయం చేసే సామర్థ్యం నిలిపివేయబడింది. సాధారణంగా ఉపయోగించే "{$var}" మరియు "$var" ప్రత్యామ్నాయాల కోసం మద్దతు అలాగే ఉంచబడింది. ఉదాహరణకు: "హలో {$world}"; సరే "హలో $వరల్డ్"; సరే "హలో ${world}"; విస్మరించబడింది: స్ట్రింగ్‌లలో ${}ని ఉపయోగించడం విస్మరించబడింది
  • "call_user_func($callable)" ద్వారా కాల్ చేయగల పాక్షికంగా మద్దతు ఉన్న కాల్ చేయదగినవి నిలిపివేయబడ్డాయి కానీ "$callable()": "self:: method" "parent:: method" "static" :: method రూపంలో కాల్ చేయడానికి మద్దతు ఇవ్వదు " ["స్వీయ", "పద్ధతి"] ["పేరెంట్", "పద్ధతి"] ["స్టాటిక్", "పద్ధతి"] ["ఫూ", "బార్::మెథడ్"] [కొత్త ఫూ, "బార్: :పద్ధతి" ]
  • ఎర్రర్_లాగ్_మోడ్ డైరెక్టివ్ సెట్టింగ్‌లకు జోడించబడింది, ఇది ఎర్రర్ లాగ్‌కు యాక్సెస్ మోడ్‌ను నిర్ణయించడానికి మిమ్మల్ని అనుమతిస్తుంది.

మూలం: opennet.ru

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