PHP 8.2 நிரலாக்க மொழியின் வெளியீடு

ஒரு வருட வளர்ச்சிக்குப் பிறகு, PHP 8.2 நிரலாக்க மொழியின் வெளியீடு வழங்கப்பட்டது. புதிய கிளையில் தொடர்ச்சியான புதிய அம்சங்கள் மற்றும் இணக்கத்தன்மையை உடைக்கும் பல மாற்றங்கள் உள்ளன.

PHP 8.2 இல் முக்கிய மேம்பாடுகள்:

  • ஒரு வகுப்பை படிக்க மட்டும் எனக் குறிக்கும் திறன் சேர்க்கப்பட்டது. அத்தகைய வகுப்புகளில் உள்ள பண்புகளை ஒரு முறை மட்டுமே அமைக்க முடியும், அதன் பிறகு அவை மாற்றத்திற்கு கிடைக்காது. முன்பு, தனிப்பட்ட வகுப்பு பண்புகளை படிக்க மட்டுமே எனக் குறிக்க முடியும், ஆனால் இப்போது நீங்கள் இந்த பயன்முறையை அனைத்து வகுப்பு பண்புகளுக்கும் ஒரே நேரத்தில் இயக்கலாம். வகுப்பு மட்டத்தில் "படிக்க மட்டும்" கொடியைக் குறிப்பிடுவது, வகுப்பிற்கு மாறும் பண்புகளைச் சேர்ப்பதையும் தடுக்கிறது. படிக்க மட்டும் வகுப்பு இடுகை {பொது செயல்பாடு __கட்டமைப்பு (பொது சரம் $title, பொது ஆசிரியர் $author, ) {}} $post = புதிய இடுகை(/* … */); $post->தெரியாது = 'தவறு'; // பிழை: டைனமிக் பண்பை உருவாக்க முடியாது இடுகை ::$தெரியாது
  • "உண்மை", "தவறு" மற்றும் "பூஜ்ய" தனித்தனி வகைகள் சேர்க்கப்பட்டன, அவை ஒரே ஒரு செல்லுபடியாகும் மதிப்பை மட்டுமே எடுக்க முடியும், எடுத்துக்காட்டாக, பிழை முடிவுக் கொடி அல்லது வெற்று மதிப்புடன் செயல்பாட்டை வழங்கப் பயன்படுத்தப்படுகின்றன. முன்பு, "உண்மை", "தவறு" மற்றும் "பூஜ்ய" ஆகியவை மற்ற வகைகளுடன் இணைந்து மட்டுமே பயன்படுத்தப்படும் (உதாரணமாக, "ஸ்ட்ரிங்|தவறு"), ஆனால் இப்போது அவை தனித்தனியாகப் பயன்படுத்தப்படலாம்: செயல்பாடு எப்போதும்False(): false { return false ; }
  • பிழையின் போது ஸ்டாக் ட்ரேஸ் வெளியீட்டில் உணர்திறன் அமைப்புகளை வடிகட்டுவதற்கான திறனை வழங்குகிறது. ஏற்படும் பிழைகள் பற்றிய தகவல் தானாகவே மூன்றாம் தரப்புச் சேவைகளுக்கு அனுப்பப்படும்போது, ​​சிக்கல்களைக் கண்காணித்து அவற்றைப் பற்றி டெவலப்பர்களுக்குத் தெரிவிக்கும் போது சில தகவல்களைத் துண்டிக்க வேண்டியிருக்கும். எடுத்துக்காட்டாக, பயனர்பெயர்கள், கடவுச்சொற்கள் மற்றும் சூழல் மாறிகள் ஆகியவற்றை உள்ளடக்கிய ட்ரேஸில் இருந்து அளவுருக்களை நீங்கள் விலக்கலாம். செயல்பாட்டு சோதனை ($foo, #[\SensitiveParameter] $கடவுச்சொல், $baz ) {புதிய விதிவிலக்கு('பிழை'); } சோதனை('foo', 'password', 'baz'); அபாயகரமான பிழை: பிடிக்கப்படாத விதிவிலக்கு: சோதனையில் பிழை ஆன்லைன் 8
  • பண்புகளில் மாறிலிகளை வரையறுக்க அனுமதிக்கப்படுகிறது (பண்பு, குறியீட்டை மீண்டும் பயன்படுத்துவதற்கான ஒரு வழிமுறை). ஒரு பண்பில் வரையறுக்கப்பட்ட மாறிலிகள், பண்பைப் பயன்படுத்தும் வகுப்பின் மூலம் அணுகலாம் (ஆனால் பண்புப் பெயரின் மூலம் அல்ல). பண்பு ஃபூ {பொது நிலை நிலையான = 1; பொது செயல்பாடு பார்(): int { return self :: CONSTANT; // அபாயகரமான பிழை } } வகுப்பு பட்டை {பயன் ஃபூ; } var_dump(Bar:: CONSTANT); // 1
  • பிரிக்கும் இயல்பான வடிவத்தில் (DNF, Disjunctive Normal Form) வகைகளைக் குறிப்பிடும் திறன் சேர்க்கப்பட்டது, இது வகைகளின் ஒன்றியம் (இரண்டு அல்லது அதற்கு மேற்பட்ட வகைகளின் தொகுப்புகள்) மற்றும் வகைகளின் குறுக்குவெட்டு (அதன் மதிப்புகள் பலவற்றின் கீழ் வரும் வகைகள்) ஆகியவற்றை இணைக்க உங்களை அனுமதிக்கிறது. ஒரே நேரத்தில் வகைகள்). வர்க்கம் ஃபூ {பொது செயல்பாடு பட்டை((A&B)|பூஜ்ய $entity) { என்றால் ($entity === null) {பூஜ்யத்தை திரும்பு; } திரும்ப $entity; } }
  • போலி-ரேண்டம் எண்கள் மற்றும் வரிசைகளை உருவாக்குவதற்கான செயல்பாடுகள் மற்றும் வகுப்புகளுடன் "ரேண்டம்" என்ற புதிய நீட்டிப்பு முன்மொழியப்பட்டது. தொகுதி ஒரு பொருள்-சார்ந்த இடைமுகத்தை வழங்குகிறது, கிரிப்டோகிராஃபியில் பயன்படுத்த பொருத்தமானவை உட்பட போலி-சீரற்ற எண்களை உருவாக்க பல்வேறு இயந்திரங்களைத் தேர்ந்தெடுக்க உங்களை அனுமதிக்கிறது, மேலும் துணை செயல்பாடுகளை வழங்குகிறது, எடுத்துக்காட்டாக, வரிசைகள் மற்றும் சரங்களை சீரற்ற முறையில் கலக்க, சீரற்ற வரிசை விசைகளைத் தேர்ந்தெடுப்பது, உங்கள் சொந்த மாநிலத்துடன் பல ஜெனரேட்டர்களை ஒரே நேரத்தில் பயன்படுத்துதல். $rng = $is_production ? புதிய ரேண்டம்\இன்ஜின்\செக்யூர்() : புதிய ரேண்டம்\இன்ஜின்\Mt19937(1234); $randomizer = புதிய Random\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_length.key.
  • புதிய முறைகள் சேர்க்கப்பட்டது: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • ஒரு வகுப்பில் பண்புகளை மாறும் வகையில் உருவாக்கும் திறன் நிராகரிக்கப்பட்டது. PHP 9.0 இல், வகுப்பில் ஆரம்பத்தில் வரையறுக்கப்படாத பண்புகளை அணுகுவது பிழையை ஏற்படுத்தும் (ErrorException). பண்புகளை உருவாக்குவதற்கான __get மற்றும் __set முறைகளை வழங்கும் வகுப்புகள், அல்லது stdClass இல் உள்ள மாறும் பண்புகள், மாறாமல் தொடர்ந்து செயல்படும், மறைந்திருக்கும் பிழைகளிலிருந்து டெவலப்பரைப் பாதுகாக்க, இல்லாத பண்புகளைக் கொண்ட மறைமுகமான வேலை மட்டுமே ஆதரிக்கப்படும். பழைய குறியீட்டின் செயல்பாட்டைப் பாதுகாக்க, "#[AllowDynamicProperties]" பண்புக்கூறு முன்மொழியப்பட்டது, இது டைனமிக் பண்புகளைப் பயன்படுத்த அனுமதிக்கிறது.
  • "${var}" மற்றும் ${(var)}" வெளிப்பாடுகளைப் பயன்படுத்தி மாறி மதிப்புகளை சரங்களாக மாற்றும் திறன் தடுக்கப்பட்டது. பொதுவாகப் பயன்படுத்தப்படும் "{$var}" மற்றும் "$var" மாற்றுகளுக்கான ஆதரவு தக்கவைக்கப்பட்டுள்ளது. உதாரணமாக: "வணக்கம் {$world}"; சரி "Hello $world"; சரி "ஹலோ ${world}"; நிராகரிக்கப்பட்டது: சரங்களில் ${}ஐப் பயன்படுத்துவது நிறுத்தப்பட்டது
  • "call_user_func($callable)" வழியாக அழைக்கக்கூடிய பகுதியளவு ஆதரிக்கப்படும் அழைப்புகள் நிராகரிக்கப்பட்டன, ஆனால் "$callable()": "self::method" "parent::method" "static :: முறை" ["சுய", "முறை"] ["பெற்றோர்", "முறை"] ["நிலையான", "முறை"] ["ஃபூ", "பார்:: முறை"] [புதிய ஃபூ, "பார்: :முறை "]
  • பிழை_log_mode கட்டளை அமைப்புகளில் சேர்க்கப்பட்டுள்ளது, இது பிழை பதிவிற்கான அணுகல் பயன்முறையைத் தீர்மானிக்க உங்களை அனுமதிக்கிறது.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்