PHP 8.2 ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆ

ಒಂದು ವರ್ಷದ ಅಭಿವೃದ್ಧಿಯ ನಂತರ, PHP 8.2 ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆಯನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಲಾಯಿತು. ಹೊಸ ಶಾಖೆಯು ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳ ಸರಣಿಯನ್ನು ಒಳಗೊಂಡಿದೆ, ಜೊತೆಗೆ ಹೊಂದಾಣಿಕೆಯನ್ನು ಮುರಿಯುವ ಹಲವಾರು ಬದಲಾವಣೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.

PHP 8.2 ನಲ್ಲಿ ಪ್ರಮುಖ ಸುಧಾರಣೆಗಳು:

  • ತರಗತಿಯನ್ನು ಓದಲು ಮಾತ್ರ ಎಂದು ಗುರುತಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಅಂತಹ ವರ್ಗಗಳಲ್ಲಿನ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಒಮ್ಮೆ ಮಾತ್ರ ಹೊಂದಿಸಬಹುದು, ಅದರ ನಂತರ ಅವುಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗುವುದಿಲ್ಲ. ಹಿಂದೆ, ಪ್ರತ್ಯೇಕ ವರ್ಗ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಓದಲು-ಮಾತ್ರ ಎಂದು ಗುರುತಿಸಬಹುದಾಗಿತ್ತು, ಆದರೆ ಈಗ ನೀವು ಈ ಮೋಡ್ ಅನ್ನು ಎಲ್ಲಾ ವರ್ಗ ಗುಣಲಕ್ಷಣಗಳಿಗೆ ಏಕಕಾಲದಲ್ಲಿ ಸಕ್ರಿಯಗೊಳಿಸಬಹುದು. ವರ್ಗ ಮಟ್ಟದಲ್ಲಿ "ಓದಲು ಮಾತ್ರ" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದರಿಂದ ವರ್ಗಕ್ಕೆ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಸೇರಿಸುವುದರಿಂದ ಗುಣಲಕ್ಷಣಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ. ಓದಲು ಮಾತ್ರ ವರ್ಗ ಪೋಸ್ಟ್ {ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __ನಿರ್ಮಾಣ (ಸಾರ್ವಜನಿಕ ಸ್ಟ್ರಿಂಗ್ $ಶೀರ್ಷಿಕೆ, ಸಾರ್ವಜನಿಕ ಲೇಖಕ $ಲೇಖಕ, ) {}} $ಪೋಸ್ಟ್ = ಹೊಸ ಪೋಸ್ಟ್(/* ... */); $post->ಅಜ್ಞಾತ = 'ತಪ್ಪು'; // ದೋಷ: ಡೈನಾಮಿಕ್ ಆಸ್ತಿಯನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ ಪೋಸ್ಟ್ ::$ಅಜ್ಞಾತ
  • "ನಿಜ", "ತಪ್ಪು" ಮತ್ತು "ಶೂನ್ಯ" ಪ್ರತ್ಯೇಕ ಪ್ರಕಾರಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಕೇವಲ ಒಂದು ಮಾನ್ಯವಾದ ಮೌಲ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು ಮತ್ತು ಉದಾಹರಣೆಗೆ, ದೋಷ ಮುಕ್ತಾಯದ ಫ್ಲ್ಯಾಗ್ ಅಥವಾ ಖಾಲಿ ಮೌಲ್ಯದೊಂದಿಗೆ ಕಾರ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಹಿಂದೆ, "ನಿಜ", "ತಪ್ಪು" ಮತ್ತು "ಶೂನ್ಯ" ಅನ್ನು ಇತರ ಪ್ರಕಾರಗಳೊಂದಿಗೆ ಮಾತ್ರ ಬಳಸಬಹುದಾಗಿತ್ತು (ಉದಾಹರಣೆಗೆ, "ಸ್ಟ್ರಿಂಗ್| ತಪ್ಪು"), ಆದರೆ ಈಗ ಅವುಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಬಳಸಬಹುದು: ಯಾವಾಗಲೂ ಫಂಕ್ಷನ್ ಫಾಲ್ಸ್(): ತಪ್ಪು {ರಿಟರ್ನ್ ತಪ್ಪು ; }
  • ದೋಷದ ಸಮಯದಲ್ಲಿ ಸ್ಟಾಕ್ ಟ್ರೇಸ್ ಔಟ್‌ಪುಟ್‌ನಲ್ಲಿ ಸೂಕ್ಷ್ಮ ನಿಯತಾಂಕಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಸಂಭವಿಸುವ ದೋಷಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಸೇವೆಗಳಿಗೆ ಕಳುಹಿಸಿದಾಗ ಕೆಲವು ಮಾಹಿತಿಯನ್ನು ಕತ್ತರಿಸುವುದು ಅಗತ್ಯವಾಗಬಹುದು, ಅದು ಸಮಸ್ಯೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುವ ಮತ್ತು ಅವುಗಳ ಬಗ್ಗೆ ಡೆವಲಪರ್‌ಗಳಿಗೆ ತಿಳಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಟ್ರೇಸಿಂಗ್‌ನಿಂದ ಬಳಕೆದಾರಹೆಸರುಗಳು, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಮತ್ತು ಪರಿಸರ ವೇರಿಯಬಲ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ನಿಯತಾಂಕಗಳನ್ನು ನೀವು ಹೊರಗಿಡಬಹುದು. ಕಾರ್ಯ ಪರೀಕ್ಷೆ ($foo, #[\SensitiveParameter] $password, $baz ) { ಹೊಸ ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಿರಿ ('ದೋಷ'); } ಪರೀಕ್ಷೆ('foo', 'password', 'baz'); ಮಾರಣಾಂತಿಕ ದೋಷ: ಪತ್ತೆಯಾಗದ ವಿನಾಯಿತಿ: test.php ನಲ್ಲಿ ದೋಷ: 8 ಸ್ಟಾಕ್ ಟ್ರೇಸ್: #0 test.php(11): test('foo', ಆಬ್ಜೆಕ್ಟ್(SensitiveParameterValue), 'baz') #1 {main} test.php ನಲ್ಲಿ ಎಸೆಯಲಾಗಿದೆ 8 ನೇ ಸಾಲಿನಲ್ಲಿ
  • ಗುಣಲಕ್ಷಣಗಳಲ್ಲಿ ಸ್ಥಿರಾಂಕಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಅನುಮತಿಸಲಾಗಿದೆ (ಲಕ್ಷಣ, ಕೋಡ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡುವ ಕಾರ್ಯವಿಧಾನ). ಗುಣಲಕ್ಷಣದಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಸ್ಥಿರಾಂಕಗಳನ್ನು ಗುಣಲಕ್ಷಣವನ್ನು ಬಳಸುವ ವರ್ಗದ ಮೂಲಕ ಪ್ರವೇಶಿಸಬಹುದು (ಆದರೆ ಲಕ್ಷಣದ ಹೆಸರಿನ ಮೂಲಕ ಅಲ್ಲ). ಲಕ್ಷಣ ಫೂ {ಸಾರ್ವಜನಿಕ ಸ್ಥಿತಿ ಸ್ಥಿರ = 1; ಪಬ್ಲಿಕ್ ಫಂಕ್ಷನ್ ಬಾರ್(): ಇಂಟ್ { ರಿಟರ್ನ್ ಸೆಲ್ಫ್ :: CONSTANT; // ಮಾರಕ ದೋಷ }} ವರ್ಗ ಬಾರ್ {ಫೂ ಬಳಸಿ; } var_dump(ಬಾರ್ :: CONSTANT); // 1
  • ವಿಘಟನೆಯ ಸಾಮಾನ್ಯ ರೂಪದಲ್ಲಿ (ಡಿಎನ್‌ಎಫ್, ಡಿಸ್ಜಂಕ್ಟಿವ್ ನಾರ್ಮಲ್ ಫಾರ್ಮ್) ಪ್ರಕಾರಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಪ್ರಕಾರಗಳ ಒಕ್ಕೂಟವನ್ನು (ಎರಡು ಅಥವಾ ಹೆಚ್ಚಿನ ಪ್ರಕಾರಗಳ ಸಂಗ್ರಹಗಳು) ಮತ್ತು ಪ್ರಕಾರಗಳ ಛೇದಕವನ್ನು (ಅದರ ಮೌಲ್ಯಗಳು ಹಲವಾರು ಅಡಿಯಲ್ಲಿ ಬೀಳುವ ಪ್ರಕಾರಗಳನ್ನು) ಸಂಯೋಜಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಏಕಕಾಲದಲ್ಲಿ ವಿಧಗಳು). ವರ್ಗ ಫೂ {ಸಾರ್ವಜನಿಕ ಫಂಕ್ಷನ್ ಬಾರ್((A&B)|ಶೂನ್ಯ $entity) { if ($entity === null) { 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). ಗುಣಲಕ್ಷಣಗಳನ್ನು ರಚಿಸಲು __ಗೆಟ್ ಮತ್ತು __ಸೆಟ್ ವಿಧಾನಗಳನ್ನು ಒದಗಿಸುವ ತರಗತಿಗಳು ಅಥವಾ stdClass ನಲ್ಲಿ ಡೈನಾಮಿಕ್ ಗುಣಲಕ್ಷಣಗಳು ಬದಲಾವಣೆಗಳಿಲ್ಲದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತವೆ, ಡೆವಲಪರ್ ಅನ್ನು ಮರೆಮಾಡಿದ ದೋಷಗಳಿಂದ ರಕ್ಷಿಸಲು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಗುಣಲಕ್ಷಣಗಳೊಂದಿಗೆ ಸೂಚ್ಯ ಕೆಲಸವನ್ನು ಮಾತ್ರ ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ. ಹಳೆಯ ಕೋಡ್‌ನ ಕೆಲಸವನ್ನು ಸಂರಕ್ಷಿಸಲು, "#[AllowDynamicProperties]" ಗುಣಲಕ್ಷಣವನ್ನು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ, ಇದು ಡೈನಾಮಿಕ್ ಗುಣಲಕ್ಷಣಗಳ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
  • "${var}" ಮತ್ತು ${(var)} ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವೇರಿಯಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ತಂತಿಗಳಾಗಿ ಬದಲಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಅಸಮ್ಮತಿಸಲಾಗಿದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ "{$var}" ಮತ್ತು "$var" ಪರ್ಯಾಯಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಉಳಿಸಿಕೊಳ್ಳಲಾಗಿದೆ. ಉದಾಹರಣೆಗೆ: "ಹಲೋ {$world}"; ಸರಿ "ಹಲೋ $ವರ್ಲ್ಡ್"; ಸರಿ "ಹಲೋ ${ವರ್ಲ್ಡ್}"; ಅಸಮ್ಮತಿಸಲಾಗಿದೆ: ${} ಅನ್ನು ತಂತಿಗಳಲ್ಲಿ ಬಳಸುವುದನ್ನು ಅಸಮ್ಮತಿಸಲಾಗಿದೆ
  • "call_user_func($callable)" ಮೂಲಕ ಕರೆಯಬಹುದಾದ ಭಾಗಶಃ ಬೆಂಬಲಿತ ಕರೆ ಮಾಡಬಹುದಾದ ಅಸಮ್ಮತಿಸಲಾಗಿದೆ ಆದರೆ "$callable()": "self:: method" "parent:: method" "static" ::method ರೂಪದಲ್ಲಿ ಕರೆ ಮಾಡುವುದನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ " ["ಸ್ವಯಂ", "ವಿಧಾನ"] ["ಪೋಷಕ", "ವಿಧಾನ"] ["ಸ್ಥಿರ", "ವಿಧಾನ"] ["ಫೂ", "ಬಾರ್:: ವಿಧಾನ"] [ಹೊಸ ಫೂ, "ಬಾರ್:: ವಿಧಾನ" ]
  • ದೋಷ_ಲಾಗ್_ಮೋಡ್ ನಿರ್ದೇಶನವನ್ನು ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಸೇರಿಸಲಾಗಿದೆ, ದೋಷ ಲಾಗ್‌ಗೆ ಪ್ರವೇಶ ಮೋಡ್ ಅನ್ನು ನಿರ್ಧರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ