PHP 8.2 ప్రోగ్రామింగ్ భాష యొక్క కొత్త శాఖ యొక్క మొదటి ఆల్ఫా విడుదల అందించబడింది. నవంబర్ 24న రిలీజ్ ప్లాన్ చేస్తున్నారు. PHP 8.2లో పరీక్ష కోసం ఇప్పటికే అందుబాటులో ఉన్న ప్రధాన ఆవిష్కరణలు లేదా అమలు కోసం ప్రణాళిక చేయబడ్డాయి:
- "తప్పుడు" మరియు "శూన్యం" అనే ప్రత్యేక రకాలు జోడించబడ్డాయి, ఉదాహరణకు, లోపం ముగింపు ఫ్లాగ్ లేదా ఖాళీ విలువను అందించడానికి ఫంక్షన్ కోసం ఉపయోగించవచ్చు. ఇంతకుముందు, "తప్పుడు" మరియు "శూన్య" ఇతర రకాలతో కలిపి మాత్రమే ఉపయోగించబడేవి (ఉదాహరణకు, "స్ట్రింగ్|ఫాల్స్"), కానీ ఇప్పుడు వాటిని విడిగా ఉపయోగించవచ్చు: ఫంక్షన్ alwaysFalse(): తప్పు {తప్పుడు రిటర్న్; }
- తరగతిని చదవడానికి మాత్రమేగా గుర్తించగల సామర్థ్యం జోడించబడింది. అటువంటి తరగతులలోని లక్షణాలు ఒక్కసారి మాత్రమే సెట్ చేయబడతాయి, ఆ తర్వాత వాటిని మార్చలేరు. ఇంతకుముందు, వ్యక్తిగత తరగతి లక్షణాలు చదవడానికి మాత్రమే గుర్తించబడతాయి, కానీ ఇప్పుడు మీరు ఈ మోడ్ని అన్ని తరగతి లక్షణాల కోసం ఒకేసారి ప్రారంభించవచ్చు. తరగతి స్థాయిలో "చదవడానికి మాత్రమే" ఫ్లాగ్ను పేర్కొనడం వలన క్లాస్కు డైనమిక్గా జోడించబడకుండా లక్షణాలను నిరోధిస్తుంది. చదవడానికి మాత్రమే తరగతి పోస్ట్ {పబ్లిక్ ఫంక్షన్ __నిర్మాణం(పబ్లిక్ స్ట్రింగ్ $శీర్షిక, పబ్లిక్ రచయిత $రచయిత, ) {}} $post = కొత్త పోస్ట్(/* … */); $post->తెలియని = 'తప్పు'; // లోపం: డైనమిక్ ప్రాపర్టీని సృష్టించడం సాధ్యం కాదు పోస్ట్ ::$తెలియదు
- తరగతిలో లక్షణాలను డైనమిక్గా సృష్టించగల సామర్థ్యం (పై ఉదాహరణలో "పోస్ట్->తెలియదు" వంటిది) నిలిపివేయబడింది. PHP 9.0లో, క్లాస్లో మొదట్లో నిర్వచించబడని ప్రాపర్టీలను యాక్సెస్ చేయడం వలన లోపం ఏర్పడుతుంది (ErrorException). లక్షణాలను సృష్టించడం కోసం __గెట్ మరియు __సెట్ పద్ధతులను అందించే తరగతులు లేదా stdClassలో డైనమిక్ ప్రాపర్టీలు మార్పులు లేకుండా పని చేస్తూనే ఉంటాయి, దాచిన బగ్ల నుండి డెవలపర్ను రక్షించడానికి ఉనికిలో లేని లక్షణాలతో అవ్యక్తమైన పని మాత్రమే మద్దతు ఇస్తుంది. పాత కోడ్ యొక్క పనిని సంరక్షించడానికి, "#[AllowDynamicProperties]" లక్షణం ప్రతిపాదించబడింది, ఇది డైనమిక్ లక్షణాల వినియోగాన్ని అనుమతిస్తుంది.
- లోపం సమయంలో స్టాక్ ట్రేస్ అవుట్పుట్లో సున్నితమైన పారామితులను ఫిల్టర్ చేసే సామర్థ్యాన్ని అందిస్తుంది. సంభవించే లోపాల గురించి సమాచారాన్ని ఆటోమేటిక్గా థర్డ్-పార్టీ సర్వీస్లకు పంపినప్పుడు, సమస్యలను ట్రాక్ చేసే మరియు వాటి గురించి డెవలపర్లకు తెలియజేసినప్పుడు నిర్దిష్ట సమాచారాన్ని కత్తిరించడం అవసరం కావచ్చు. ఉదాహరణకు, మీరు ట్రేసింగ్ నుండి వినియోగదారు పేర్లు, పాస్వర్డ్లు మరియు ఎన్విరాన్మెంట్ వేరియబుల్లను కలిగి ఉన్న పారామితులను మినహాయించవచ్చు. ఫంక్షన్ పరీక్ష ($foo, #[\SensitiveParameter] $password, $baz ) {త్రో కొత్త మినహాయింపు('ఎర్రర్'); } పరీక్ష('foo', 'password', 'baz'); ఘోరమైన లోపం: గుర్తించబడని మినహాయింపు: పరీక్షలో లోపం లైన్ 8లో
- "${var}" మరియు ${(var)} వ్యక్తీకరణలను ఉపయోగించి వేరియబుల్ విలువలను స్ట్రింగ్లలోకి ప్రత్యామ్నాయం చేసే సామర్థ్యం నిలిపివేయబడింది. సాధారణంగా ఉపయోగించే "{$var}" మరియు "$var" ప్రత్యామ్నాయాల కోసం మద్దతు అలాగే ఉంచబడింది. ఉదాహరణకు: "హలో {$world}"; సరే "హలో $వరల్డ్"; సరే "హలో ${world}"; విస్మరించబడింది: స్ట్రింగ్లలో ${}ని ఉపయోగించడం విస్మరించబడింది
- "call_user_func($callable)" ద్వారా కాల్ చేయగల పాక్షికంగా మద్దతు ఉన్న కాల్ చేయదగినవి నిలిపివేయబడ్డాయి కానీ "$callable()": "self:: method" "parent:: method" "static" :: method రూపంలో కాల్ చేయడానికి మద్దతు ఇవ్వదు " ["స్వీయ", "పద్ధతి"] ["పేరెంట్", "పద్ధతి"] ["స్టాటిక్", "పద్ధతి"] ["ఫూ", "బార్::మెథడ్"] [కొత్త ఫూ, "బార్: :పద్ధతి" ]
- లొకేల్-ఇండిపెండెంట్ కేస్ మార్పిడి అమలు చేయబడింది. strtolower() మరియు strtoupper() వంటి విధులు ఇప్పుడు ఎల్లప్పుడూ ASCII పరిధిలోని అక్షరాల కేస్ను "C" లొకేల్కి సెట్ చేసినట్లుగా మారుస్తాయి.
మూలం: opennet.ru