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

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

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

  • கணக்கீடுகளுக்கான ஆதரவு சேர்க்கப்பட்டது, எடுத்துக்காட்டாக, நீங்கள் இப்போது பின்வரும் கட்டுமானங்களைப் பயன்படுத்தலாம்: enum நிலை { வழக்கு நிலுவையில் உள்ளது; வழக்கு செயலில்; வழக்கு காப்பகப்படுத்தப்பட்டது; } வகுப்பு இடுகை {பொது செயல்பாடு __கன்ஸ்ட்ரக்ட் (தனியார் நிலை $ நிலை = நிலை:: நிலுவையில் உள்ளது; ) {} பொதுச் செயல்பாடு தொகுப்பு நிலை(நிலை $ நிலை): செல்லாது { // … }} $post->செட் நிலை(நிலை:: செயலில்);
  • ஃபைபர்ஸ் எனப்படும் இலகுரக நூல்களுக்கான ஆதரவு சேர்க்கப்பட்டது, இது குறைந்த மட்டத்தில் செயல்படுத்தும் நூல்களை நிர்வகிக்க உங்களை அனுமதிக்கிறது. ஃபைபர் ஆதரவு Amphp மற்றும் ReactPHP கட்டமைப்பில் சேர்க்க திட்டமிடப்பட்டுள்ளது. $fiber = புதிய ஃபைபர்(செயல்பாடு (): void {$valueAfterResuming = Fiber::suspend('suspending' after'); // ... }); $valueAfterSuspending = $fiber->start(); $fiber->resume('resuming');
  • ஆப்ஜெக்ட் கோட் கேச் (opcache) செயல்படுத்தல் மேம்படுத்தப்பட்டுள்ளது, இது வர்க்க மரபு பற்றிய தகவலை தற்காலிக சேமிப்பை சாத்தியமாக்குகிறது. உகப்பாக்கம் சில பயன்பாடுகளின் செயல்திறனை 5-8% அதிகரிக்கச் செய்தது. மற்ற மேம்படுத்தல்களில் JIT செயல்பாட்டின் மேம்படுத்தல், ARM64 கட்டமைப்பிற்கான JIT ஆதரவை செயல்படுத்துதல் (AArch64), பெயர் தெளிவுத்திறனை முடுக்கம், டைம்லிப் மற்றும் எக்ஸ்ட்/டேட் லைப்ரரிகளின் மேம்படுத்தல், அதிகரித்த வரிசைப்படுத்தல் மற்றும் டீரியலைசேஷன் செயல்திறன், get_declared_classes (), explode() , strtr() செயல்பாடு, strnatcmp(), dechex(). பொதுவாக, சிம்ஃபோனி டெமோவின் செயல்திறனில் 23.0% மற்றும் வேர்ட்பிரஸ் 3.5% அதிகரிப்பு உள்ளது.
  • "...$var" வரிசைகளுக்குள் இருக்கும் அன்பேக்கிங் ஆபரேட்டர், புதிய வரிசையை வரையறுக்கும் போது இருக்கும் அணிவரிசைகளை மாற்றுவதற்கு அனுமதிக்கும், இது ஸ்ட்ரிங் கீகளை ஆதரிக்கும் வகையில் நீட்டிக்கப்பட்டுள்ளது (முன்பு டிஜிட்டல் அடையாளங்காட்டிகள் மட்டுமே ஆதரிக்கப்பட்டது). எடுத்துக்காட்டாக, நீங்கள் இப்போது குறியீட்டில் பயன்படுத்தலாம்: $array1 = [“a” => 1]; $array2 = ["b" => 2]; $array = [“a” => 0, …$array1, …$array2]; var_dump ($ வரிசை); // ["a" => 1, "b" => 2]
  • இயல்புநிலை அளவுரு அல்லது வாத பண்புக்கூறுகள் போன்ற செயல்பாட்டு வரையறைகளில், துவக்கிகளில் "புதிய" முக்கிய சொல்லைப் பயன்படுத்த அனுமதிக்கப்படுகிறது. class MyController {பொது செயல்பாடு __construct( தனியார் லாகர் $logger = புதிய NullLogger(), ) {}}
  • படிக்க-மட்டும் அணுகலுக்கான வகுப்பு பண்புகளைக் குறிக்க முடியும் (அத்தகைய பண்புகளில் உள்ள தகவல்களை ஒரு முறை மட்டுமே எழுத முடியும், அதன் பிறகு அது மாற்றத்திற்கு கிடைக்காது). class PostData {பொது செயல்பாடு __கன்ஸ்ட்ரக்ட்(பொது படிக்க மட்டும் சரம் $தலைப்பு, பொது படிக்க மட்டும் DateTimeImutable $date, ) {} } $post = புதிய இடுகை('தலைப்பு', /* … */); $post->title = 'பிற'; > பிழை: படிக்க மட்டுமேயான சொத்தை மாற்ற முடியாது Post::$title
  • அழைக்கக்கூடிய பொருள்களுக்கு ஒரு புதிய தொடரியல் செயல்படுத்தப்பட்டுள்ளது - ஒரு செயல்பாட்டை அழைத்து, "..." மதிப்பை ஒரு வாதமாக (அதாவது myFunc(...) என்பதற்குப் பதிலாக Closure::fromCallable('myFunc) ஐ அனுப்புவதன் மூலம் இப்போது மூடல் உருவாக்கப்படும். ')): செயல்பாடு foo (int $a, int $b) { /* … */} $foo = foo(...); $foo(a: 1, b: 2);
  • குறுக்குவெட்டு வகைகளுக்கு முழு ஆதரவு சேர்க்கப்பட்டது, ஏற்கனவே உள்ளவற்றை இணைப்பதன் மூலம் புதிய வகைகளை உருவாக்க உங்களை அனுமதிக்கிறது. இரண்டு அல்லது அதற்கு மேற்பட்ட வகைகளின் சேகரிப்புகளை வரையறுக்கும் தொழிற்சங்க வகைகளைப் போலன்றி, குறுக்குவெட்டு வகைகளுக்கு பட்டியலிடப்பட்ட வகைகள் எதுவும் இல்லை, ஆனால் தொகுப்பில் உள்ள அனைத்து குறிப்பிட்ட வகைகளும் நிரப்பப்பட வேண்டும். செயல்பாடு ஜெனரேட்ஸ்லக்(HasTitle&HasId $post) { return strtolower($post->getTitle()) . $post->getId(); }
  • ஒரு செயல்பாடு நிரல் செயலாக்கத்தை நிறுத்தும் என்று நிலையான பகுப்பாய்விகளுக்குத் தெரிவிக்க "ஒருபோதும்" என்ற புதிய வகை உள்ளது, எடுத்துக்காட்டாக, விதிவிலக்கு அல்லது வெளியேறும் செயல்பாட்டைச் செயல்படுத்துதல். செயல்பாடு dd(கலப்பு $உள்ளீடு): ஒருபோதும் {வெளியேறு; }
  • ஒரு புதிய செயல்பாடு array_is_list முன்மொழியப்பட்டது, இது 0: $list = [“a”, “b”, “c”] தொடங்கி, எண்ணியல் மதிப்புகளை அதிகரிக்கும் வரிசையில் வரிசையில் உள்ள விசைகள் அமைக்கப்பட்டுள்ளன என்பதை தீர்மானிக்க உங்களை அனுமதிக்கிறது. array_is_list($list); // true $notAList = [1 => “a”, 2 => “b”, 3 => “c”]; array_is_list($notAList); // தவறான $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list($alsoNotAList); //பொய்
  • பெற்றோர் வகுப்பு மாறிலிகள் மேலெழுதப்படுவதைத் தடுக்க நீங்கள் இப்போது "இறுதி" முக்கிய சொல்லைப் பயன்படுத்தலாம். வகுப்பு ஃபூ {இறுதி பொது நிலை X = "foo"; } கிளாஸ் பார் ஃபூவை நீட்டிக்கிறது {பொது கான்ஸ்ட் எக்ஸ் = "பார்"; > அபாயகரமான பிழை: பார்::X இறுதி மாறிலியை மீற முடியாது Foo::X }
  • fsync மற்றும் fdatasync செயல்பாடுகள் வட்டு தற்காலிக சேமிப்பிலிருந்து மாற்றங்களைச் சேமிக்க முன்மொழியப்பட்டுள்ளன. $file = fopen("sample.txt", "w"); fwrite($file, "சில உள்ளடக்கம்"); என்றால் (fsync($file)) { எதிரொலி "கோப்பு வெற்றிகரமாக வட்டில் தொடரப்பட்டது."; } fclose($file);
  • முன்பு பயன்படுத்தப்பட்ட "0" முன்னொட்டுடன் கூடுதலாக, எண்கள் எண்களுக்கு "0o" மற்றும் "0O" முன்னொட்டுகளைப் பயன்படுத்தும் திறன் சேர்க்கப்பட்டது. 016 === 0o16; // உண்மை 016 === 0O16; //உண்மை
  • $GLOBALS இன் பயன்பாட்டைத் தேர்ந்தெடுக்கப்பட்ட முறையில் கட்டுப்படுத்த முன்மொழியப்பட்டுள்ளது, இது பின்தங்கிய இணக்கத்தன்மையை மீறுவதற்கு வழிவகுக்கும், ஆனால் வரிசைகளுடன் செயல்பாடுகளை கணிசமாக விரைவுபடுத்துவதை சாத்தியமாக்கும். எடுத்துக்காட்டாக, $GLOBALS க்கு எழுதுவதை முடக்கி, $GLOBALSஐ சுட்டி மூலம் கடந்து செல்லும் சாத்தியம் பரிசீலிக்கப்படுகிறது. 2000 தொகுப்புகளின் பகுப்பாய்வு, இந்த மாற்றத்தால் அவற்றில் 23 மட்டுமே பாதிக்கப்படும் என்பதைக் காட்டுகிறது. எடுத்துக்காட்டாக, முன்மொழிவு அங்கீகரிக்கப்பட்டால், 8.1 இனி பின்வரும் வெளிப்பாடுகளை ஆதரிக்காது: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; அமைக்கப்படவில்லை ($ GLOBALS); by_ref($GLOBALS);
  • உள் முறைகள் இப்போது சரியான வகையைத் திருப்பித் தர வேண்டும். PHP 8.1 இல், செயல்பாட்டு அறிவிப்புடன் பொருந்தாத வகையைத் திருப்பி அனுப்புவது ஒரு எச்சரிக்கையை உருவாக்கும், ஆனால் PHP 9.0 இல் எச்சரிக்கை பிழையுடன் மாற்றப்படும்.
  • வளங்களைப் பயன்படுத்துவதிலிருந்து பொருட்களைக் கையாளுதல் வரை செயல்பாடுகளை மாற்றும் பணி தொடர்ந்தது. finfo_* மற்றும் imap_* செயல்பாடுகள் பொருள்களுக்கு மாற்றப்பட்டுள்ளன.
  • பூஜ்ய மதிப்புகளை பூஜ்ய மதிப்புகளை வாதங்களாக மாற்றியமைக்க முடியாததாகக் குறிக்கப்பட்ட உள் செயல்பாடுகளுக்கு அனுப்புவது நிறுத்தப்பட்டது. PHP 8.1 இல், str_contains (“string”, null) போன்ற கட்டுமானங்களைப் பயன்படுத்துவது எச்சரிக்கைக்கும், PHP 9 இல் பிழைக்கும் வழிவகுக்கும்.
  • MurmurHash3 மற்றும் xxHash ஹாஷிங் அல்காரிதம்களுக்கான ஆதரவு சேர்க்கப்பட்டது.

ஆதாரம்: opennet.ru

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