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

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

PHP 8.3 இல் முக்கிய மாற்றங்கள்:

  • கிளாஸ் குளோனிங்கின் போது, ​​"படிக்க மட்டும்" பண்புடன் பண்புகளை மீண்டும் துவக்க முடியும். "__clone" செயல்பாட்டிற்குள் மட்டுமே படிக்கமட்டும் பண்புகளை மீறுவது அனுமதிக்கப்படுகிறது: படிக்க மட்டும் வகுப்பு இடுகை {பொது செயல்பாடு __confirst (பொது தேதிநேரம் $createdAt, ) {} பொது செயல்பாடு __clone() {$this->createdAt = புதிய தேதிநேரம்(); // "createdAt" சொத்து படிக்க மட்டுமே என்றாலும் அனுமதிக்கப்படுகிறது. } }
  • வகுப்புகள், குணாதிசயங்கள் மற்றும் கணக்கீடுகளில் வகை குறிப்புடன் மாறிலிகளைப் பயன்படுத்துவதற்கான திறன் வழங்கப்பட்டுள்ளது: class Foo {const string BAR = 'baz'; }
  • “#[ஓவர்ரைடு]” பண்புக்கூறுக்கான ஆதரவு சேர்க்கப்பட்டது, இதன் மூலம் டெவெலப்பர் குறிப்பிடப்பட்ட முறை சில பெற்றோர் முறையை மீறுகிறது என்பதை மொழிபெயர்ப்பாளருக்கு தெரிவிக்க முடியும். மீறல் இல்லை என்றால், மொழிபெயர்ப்பாளர் ஒரு பிழையைக் காண்பிப்பார்.
  • எதிர்மறை மதிப்புகளை வரிசைக் குறியீடாகக் கையாளுதல் மாற்றப்பட்டது. எடுத்துக்காட்டாக, "-5" என்ற எண்ணைக் கொண்ட ஒரு உறுப்பை வெற்று வரிசையில் சேர்த்து மற்றொரு உறுப்பைச் சேர்க்கும் போது, ​​முன்பு இரண்டாவது உறுப்பு "0" குறியீட்டுடன் சேமிக்கப்பட்டது, ஆனால் PHP 8.3 பதிப்பிலிருந்து தொடங்கி அது "-4" குறியீட்டில் சேமிக்கப்படும். . $ வரிசை = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // அணிவரிசையாக இருந்தது (-5 => 'a', 0 => 'b') // அணிவரிசையாக மாறியது (-5 => 'a', -4 => 'b')
  • படிக்க-மட்டும் முறையில் அநாமதேய வகுப்புகளை உருவாக்கும் திறன் சேர்க்கப்பட்டது: $class = புதிய படிக்கமட்டும் வகுப்பு {பொது செயல்பாடு __confirst (பொது சரம் $foo = 'பார்', ) {}};
  • டிகோடிங் செயல்பாடுகளைச் செய்யாமல் ஒரு சரம் JSON வடிவத்தில் உள்ளதா என்பதை விரைவாகச் சரிபார்க்க json_validate() செயல்பாடு சேர்க்கப்பட்டது. json_validate(string $json, int $depth = 512, int $flags = 0): bool
  • ரேண்டமைசர் வகுப்பில் புதிய முறைகள் சேர்க்கப்பட்டுள்ளன, இது போலி-ரேண்டம் எண்கள் மற்றும் வரிசைகளை உருவாக்குவதற்கான உயர்-நிலை API ஐ வழங்குகிறது: மற்றொரு சரத்தில் உள்ள எழுத்துக்களை சீரற்ற முறையில் பயன்படுத்தி, கொடுக்கப்பட்ட அளவிலான சரத்தை உருவாக்குவதற்கு getBytesFromString; குறிப்பிட்ட வரம்பிற்குள் வரும் சீரற்ற மிதக்கும் புள்ளி எண்ணை உருவாக்க getFloat மற்றும் nextFloat.
  • மாறும் வகுப்பு தொடரியல் பயன்படுத்தி மாறிலிகளை மீட்டெடுக்கும் திறனைச் சேர்த்தது: class Foo {const BAR = 'bar'; } $name = 'BAR'; // முன்பு, BAR மாறிலியை மீட்டெடுக்க, நீங்கள் மாறிலியை அழைக்க வேண்டும்(Foo::class . '::' . $name); // இப்போது Foo ஐ குறிப்பிடவும்::{$name};
  • தேதிகள் மற்றும் நேரத்துடன் பணிபுரியும் செயல்பாடுகளில் சிக்கல்கள் ஏற்பட்டால், தனிப்பட்ட விதிவிலக்குகள் (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) சேர்க்கப்பட்டது.
  • unserialize() செயல்பாட்டில் வரிசைப்படுத்தப்பட்ட தரவை பாகுபடுத்தும் போது ஏற்படும் பிழைகளை மேம்படுத்தப்பட்ட கையாளுதல். சிக்கல்கள் ஏற்பட்டால், unserialize() இப்போது E_NOTICE க்கு பதிலாக E_WARNING ஐ வெளியிடுகிறது.
  • வரம்பு() செயல்பாட்டில் மாற்றங்கள் செய்யப்பட்டுள்ளன. வரம்பு எல்லைகளை வரையறுக்கும் மாறிகளில் பொருள்கள், வளங்கள் அல்லது அணிவரிசைகளை அனுப்ப முயற்சிக்கும் போது, ​​அதே போல் $step அளவுருவில் எதிர்மறை மதிப்பை அல்லது எந்த அளவுருவில் வரையறுக்கப்படாத மதிப்பைக் குறிப்பிடும்போதும் விதிவிலக்கு உருவாக்கப்படுகிறது. எண்களுக்குப் பதிலாக சரங்களைக் குறிப்பிடும்போது எழுத்துகளின் பட்டியலை இப்போது வெளியிடலாம் (எடுத்துக்காட்டாக, “வரம்பு('5', 'z')").
  • நிலையான பண்புகளுடன் பண்புகளின் நடத்தை மாற்றப்பட்டது, இது இப்போது பெற்றோர் வகுப்பிலிருந்து பெறப்பட்ட நிலையான பண்புகளை மீறுகிறது.
  • ஸ்டாக் ஓவர்ஃப்ளோ பாதுகாப்பிற்கான அமைப்புகள் சேர்க்கப்பட்டது. zend.max_allowed_stack_size மற்றும் zend.reserved_stack_size கட்டளைகள் ini கோப்பில் சேர்க்கப்பட்டு, அதிகபட்ச அனுமதிக்கப்பட்ட மற்றும் ஒதுக்கப்பட்ட ஸ்டாக் அளவை வரையறுக்கிறது. Zend.max_allowed_stack_size மற்றும் zend.reserved_stack_size (பிரிவு தவறு ஏற்படும் முன் செயல்படுத்தல் நிறுத்தப்படும்) இடையே உள்ள வேறுபாட்டை விட ஸ்டேக் நிரம்பியிருக்கும் போது, ​​ஸ்டாக் தீர்ந்து போகும் போது நிரல் செயலிழக்கும். இயல்பாக, zend.max_allowed_stack_size மதிப்பு 0 ஆக அமைக்கப்படும் (0—அளவு தானாக தீர்மானிக்கப்படும்; வரம்பை முடக்க, அதை -1 என அமைக்கலாம்).
  • புதிய POSIX செயல்பாடுகள் posix_sysconf(), posix_pathconf(), posix_fpathconf() மற்றும் posix_eaccess() சேர்க்கப்பட்டது.
  • mb_str_pad செயல்பாடு சேர்க்கப்பட்டது, இது str_pad() ஸ்ட்ரிங் செயல்பாட்டின் அனலாக் ஆகும், இது UTF-8 போன்ற பல பைட் குறியாக்கங்களுடன் வேலை செய்ய வடிவமைக்கப்பட்டுள்ளது.
  • முறைகளிலிருந்து மூடல்களை உருவாக்கவும், அந்த மூடல்களுக்கு பெயரிடப்பட்ட வாதங்களை அனுப்பவும் உங்களை அனுமதிக்கிறது. $ சோதனை = புதிய சோதனை(); $ மூடுதல் = $ சோதனை-> மந்திரம்(...); $closure(a: 'hello', b: 'world');
  • இடைமுகங்களில் மாறிலிகளின் தெரிவுநிலையைக் கையாளும் போது மாற்றப்பட்ட நடத்தை. இடைமுகம் I { public const FOO = 'foo'; } கிளாஸ் சி செயல்படுத்துகிறது I {private const FOO = 'foo'; }
  • array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() மற்றும் proc_get_status() செயல்பாடுகளின் திறன்கள் விரிவாக்கப்பட்டுள்ளன.
  • எதிர்மறை $widths மதிப்பை mb_strimwidth() க்கு அனுப்பும் திறன் தடுக்கப்பட்டது. NumberFormatter::TYPE_CURRENCY மாறிலி அகற்றப்பட்டது. $host மற்றும் $port ஆகிய இரண்டு அளவுருக்கள் கொண்ட ldap_connect() செயல்பாட்டை அழைப்பதற்கான ஆதரவு நிறுத்தப்பட்டது. opcache.consistency_checks அமைப்பு அகற்றப்பட்டது.

ஆதாரம்: opennet.ru

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