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

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

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

  • ಎಣಿಕೆಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಉದಾಹರಣೆಗೆ, ನೀವು ಈಗ ಈ ಕೆಳಗಿನ ರಚನೆಗಳನ್ನು ಬಳಸಬಹುದು: enum ಸ್ಥಿತಿ {ಕೇಸ್ ಬಾಕಿಯಿದೆ; ಪ್ರಕರಣ ಸಕ್ರಿಯ; ಕೇಸ್ ಆರ್ಕೈವ್ ಮಾಡಲಾಗಿದೆ; } ವರ್ಗ ಪೋಸ್ಟ್ {ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __ನಿರ್ಮಾಣ(ಖಾಸಗಿ ಸ್ಥಿತಿ $ಸ್ಥಿತಿ = ಸ್ಥಿತಿ:: ಬಾಕಿ;
  • ಫೈಬರ್ಸ್ ಎಂಬ ಹಗುರವಾದ ಥ್ರೆಡ್‌ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಕಡಿಮೆ ಮಟ್ಟದಲ್ಲಿ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಥ್ರೆಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಫೈಬರ್ ಬೆಂಬಲವನ್ನು Amphp ಮತ್ತು ReactPHP ಫ್ರೇಮ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಸೇರಿಸಲು ಯೋಜಿಸಲಾಗಿದೆ. $ಫೈಬರ್ = ಹೊಸ ಫೈಬರ್(ಫಂಕ್ಷನ್ (): ನಿರರ್ಥಕ {$valueAfterResuming = ಫೈಬರ್ ::suspend('ಅಮಾನತುಗೊಳಿಸಿದ ನಂತರ'); // ...}); $valueAfterSuspending = $fiber->start(); $fiber->ರೆಸ್ಯೂಮ್('ಪುನರಾರಂಭಿಸಿದ ನಂತರ');
  • ಆಬ್ಜೆಕ್ಟ್ ಕೋಡ್ ಕ್ಯಾಶ್ (opcache) ಅನುಷ್ಠಾನವನ್ನು ಸುಧಾರಿಸಲಾಗಿದೆ, ಇದು ವರ್ಗ ಆನುವಂಶಿಕ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಈ ಆಪ್ಟಿಮೈಸೇಶನ್ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು 5-8% ಹೆಚ್ಚಿಸಿದೆ. ಇತರ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳಲ್ಲಿ JIT ಆಪ್ಟಿಮೈಸೇಶನ್, ARM64 (AArch64) ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಾಗಿ JIT ಬೆಂಬಲ, ಹೆಸರು ರೆಸಲ್ಯೂಶನ್ ವೇಗವರ್ಧನೆ, ಟೈಮ್‌ಲಿಬ್ ಮತ್ತು ext/date ಲೈಬ್ರರಿ ಆಪ್ಟಿಮೈಸೇಶನ್, ಹೆಚ್ಚಿದ ಸೀರಿಯಲೈಸೇಶನ್ ಮತ್ತು ಡೆಸೀರಿಯಲೈಸೇಶನ್ ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು get_declared_classes(), explode(), strtr(), strnatcmp(), ಮತ್ತು dechex() ಕಾರ್ಯಗಳ ಆಪ್ಟಿಮೈಸೇಶನ್ ಸೇರಿವೆ. ಒಟ್ಟಾರೆಯಾಗಿ, ಸಿಮ್‌ಫೊನಿ ಡೆಮೊದ ಕಾರ್ಯಕ್ಷಮತೆ 23.0% ರಷ್ಟು ಹೆಚ್ಚಾಗಿದೆ, ಮತ್ತು WordPress 3.5% ನಲ್ಲಿ.
  • ಹೊಸ ಅರೇಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವಾಗ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಅರೇಗಳ ಪರ್ಯಾಯವನ್ನು ಅನುಮತಿಸುವ "...$var" ರಚನೆಗಳ ಒಳಗಿನ ಅನ್ಪ್ಯಾಕ್ ಮಾಡುವ ಆಪರೇಟರ್ ಅನ್ನು ಸ್ಟ್ರಿಂಗ್ ಕೀಗಳನ್ನು ಬೆಂಬಲಿಸಲು ವಿಸ್ತರಿಸಲಾಗಿದೆ (ಹಿಂದೆ ಕೇವಲ ಡಿಜಿಟಲ್ ಐಡೆಂಟಿಫೈಯರ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸಲಾಗಿತ್ತು). ಉದಾಹರಣೆಗೆ, ನೀವು ಈಗ ಕೋಡ್‌ನಲ್ಲಿ ಬಳಸಬಹುದು: $array1 = [“a” => 1]; $array2 = ["b" => 2]; $array = [“a” => 0, …$array1, …$array2]; var_dump ($ ರಚನೆ); // ["a" => 1, "b" => 2]
  • "ಹೊಸ" ಕೀವರ್ಡ್ ಅನ್ನು ಇನಿಶಿಯಲೈಜರ್‌ಗಳಲ್ಲಿ ಬಳಸಲು ಅನುಮತಿಸಲಾಗಿದೆ, ಉದಾಹರಣೆಗೆ ಫಂಕ್ಷನ್ ವ್ಯಾಖ್ಯಾನಗಳಲ್ಲಿ ಡೀಫಾಲ್ಟ್ ಪ್ಯಾರಾಮೀಟರ್ ಅಥವಾ ಆರ್ಗ್ಯುಮೆಂಟ್ ಗುಣಲಕ್ಷಣಗಳಲ್ಲಿ. ಕ್ಲಾಸ್ ಮೈಕಂಟ್ರೋಲರ್ {ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __ಕನ್ಸ್ಟ್ರಕ್ಟ್(ಖಾಸಗಿ ಲಾಗರ್ $ಲಾಗರ್ = ಹೊಸ ನಲ್ಲಾಗರ್(), ) {}}
  • ಓದಲು-ಮಾತ್ರ ಪ್ರವೇಶಕ್ಕಾಗಿ ವರ್ಗ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಗುರುತಿಸಲು ಸಾಧ್ಯವಿದೆ (ಅಂತಹ ಗುಣಲಕ್ಷಣಗಳಲ್ಲಿನ ಮಾಹಿತಿಯನ್ನು ಒಮ್ಮೆ ಮಾತ್ರ ಬರೆಯಬಹುದು, ಅದರ ನಂತರ ಅದು ಬದಲಾವಣೆಗೆ ಲಭ್ಯವಿರುವುದಿಲ್ಲ). ವರ್ಗ ಪೋಸ್ಟ್‌ಡೇಟಾ {ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __ಕನ್ಸ್ಟ್ರಕ್ಟ್ (ಸಾರ್ವಜನಿಕ ಓದಲು ಮಾತ್ರ ಸ್ಟ್ರಿಂಗ್ $ಶೀರ್ಷಿಕೆ, ಸಾರ್ವಜನಿಕ ಓದಲು ಮಾತ್ರ ಡೇಟ್ಟೈಮ್ಇಮ್ಯೂಟಬಲ್ $ ದಿನಾಂಕ, ) {}} $ಪೋಸ್ಟ್ = ಹೊಸ ಪೋಸ್ಟ್ ('ಶೀರ್ಷಿಕೆ', /* … */); $post->ಶೀರ್ಷಿಕೆ = 'ಇತರ'; > ದೋಷ: ಓದಲು ಮಾತ್ರ ಆಸ್ತಿಯನ್ನು ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ ಪೋಸ್ಟ್::$title
  • ಕರೆಯಬಹುದಾದ ಆಬ್ಜೆಕ್ಟ್‌ಗಳಿಗಾಗಿ ಹೊಸ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ - ಒಂದು ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆದು ಅದನ್ನು "..." ಮೌಲ್ಯವನ್ನು ವಾದವಾಗಿ (ಅಂದರೆ MyFunc(...) ಬದಲಿಗೆ Closure ::fromCallable('myFunc) ಮೂಲಕ ರವಾನಿಸುವ ಮೂಲಕ ಮುಚ್ಚುವಿಕೆಯನ್ನು ರಚಿಸಬಹುದು. ')): ಫಂಕ್ಷನ್ ಫೂ (int $a, int $b) { /* … */} $foo = foo(...); $foo(a: 1, b: 2);
  • ಛೇದಕ ಪ್ರಕಾರಗಳಿಗೆ ಸಂಪೂರ್ಣ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಅಸ್ತಿತ್ವದಲ್ಲಿರುವವುಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಮೂಲಕ ಹೊಸ ಪ್ರಕಾರಗಳನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಎರಡು ಅಥವಾ ಹೆಚ್ಚಿನ ಪ್ರಕಾರಗಳ ಸಂಗ್ರಹಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಯೂನಿಯನ್ ಪ್ರಕಾರಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ಛೇದಕ ಪ್ರಕಾರಗಳಿಗೆ ಪಟ್ಟಿ ಮಾಡಲಾದ ಯಾವುದೇ ಪ್ರಕಾರಗಳ ಉಪಸ್ಥಿತಿಯ ಅಗತ್ಯವಿರುತ್ತದೆ, ಆದರೆ ಸೆಟ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ನಿರ್ದಿಷ್ಟ ಪ್ರಕಾರಗಳನ್ನು ಭರ್ತಿ ಮಾಡಬೇಕು. ಫಂಕ್ಷನ್ ಜನರೇಟ್ ಸ್ಲಗ್ (ಹ್ಯಾಸ್‌ಟೈಟಲ್&ಹ್ಯಾಸ್‌ಐಡಿ $ಪೋಸ್ಟ್) { ರಿಟರ್ನ್ strtolower($post->getTitle()) . $post->getId(); }
  • ಒಂದು ಕಾರ್ಯವು ಪ್ರೋಗ್ರಾಮ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಅನ್ನು ಅಂತ್ಯಗೊಳಿಸುತ್ತದೆ ಎಂದು ಸ್ಥಾಯೀ ವಿಶ್ಲೇಷಕಗಳಿಗೆ ತಿಳಿಸಲು "ಎಂದಿಗೂ" ಎಂಬ ಹೊಸ ಪ್ರಕಾರವನ್ನು ಬಳಸಬಹುದಾಗಿದೆ, ಉದಾಹರಣೆಗೆ ಒಂದು ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯುವ ಮೂಲಕ ಅಥವಾ ನಿರ್ಗಮನ ಕಾರ್ಯವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೂಲಕ. ಫಂಕ್ಷನ್ ಡಿಡಿ(ಮಿಶ್ರ $ಇನ್‌ಪುಟ್): ಎಂದಿಗೂ {ನಿರ್ಗಮನ; }
  • ಹೊಸ ಫಂಕ್ಷನ್ array_is_list ಅನ್ನು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ, ಇದು 0: $list = [“a”, “b”, “c”] ನಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯಗಳನ್ನು ಹೆಚ್ಚಿಸುವ ಕ್ರಮದಲ್ಲಿ ಸರಣಿಯಲ್ಲಿನ ಕೀಗಳನ್ನು ಜೋಡಿಸಲಾಗಿದೆ ಎಂದು ನಿರ್ಧರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ; array_is_list($list); // ನಿಜವಾದ $notAList = [1 => “a”, 2 => “b”, 3 => “c”]; array_is_list ($notAList); // ತಪ್ಪು $alsoNotAList = [“a” => “a”, “b” => “b”, “c” => “c”]; array_is_list($alsoNotAList); // ಸುಳ್ಳು
  • ಪೋಷಕ ವರ್ಗದ ಸ್ಥಿರಾಂಕಗಳನ್ನು ಅತಿಕ್ರಮಿಸುವುದನ್ನು ತಡೆಯಲು ನೀವು ಈಗ "ಅಂತಿಮ" ಕೀವರ್ಡ್ ಅನ್ನು ಬಳಸಬಹುದು. ವರ್ಗ ಫೂ {ಅಂತಿಮ ಸಾರ್ವಜನಿಕ const X = "foo"; } ಕ್ಲಾಸ್ ಬಾರ್ ಫೂ ಅನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ {ಸಾರ್ವಜನಿಕ ಕಾನ್ಸ್ಟ್ ಎಕ್ಸ್ = "ಬಾರ್"; > ಮಾರಣಾಂತಿಕ ದೋಷ: ಬಾರ್::X ಅಂತಿಮ ಸ್ಥಿರವನ್ನು ಅತಿಕ್ರಮಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ Foo::X }
  • fsync ಮತ್ತು fdatasync ಕಾರ್ಯಗಳನ್ನು ಡಿಸ್ಕ್ ಸಂಗ್ರಹದಿಂದ ಉಳಿಸಲು ಬದಲಾವಣೆಗಳನ್ನು ಒತ್ತಾಯಿಸಲು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ. $file = fopen("sample.txt", "w"); fwrite($file, "ಕೆಲವು ವಿಷಯ"); if (fsync($file)) {echo "ಫೈಲ್ ಅನ್ನು ಡಿಸ್ಕ್‌ಗೆ ಯಶಸ್ವಿಯಾಗಿ ಮುಂದುವರಿಸಲಾಗಿದೆ."; } fclose($file);
  • ಹಿಂದೆ ಬಳಸಿದ "0" ಪೂರ್ವಪ್ರತ್ಯಯಕ್ಕೆ ಹೆಚ್ಚುವರಿಯಾಗಿ ಆಕ್ಟಲ್ ಸಂಖ್ಯೆಗಳಿಗೆ "0o" ಮತ್ತು "0O" ಪೂರ್ವಪ್ರತ್ಯಯಗಳನ್ನು ಬಳಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. 016 === 0o16; // ನಿಜ 016 === 0O16; //ನಿಜ
  • $GLOBALS ನ ಬಳಕೆಯನ್ನು ಆಯ್ದವಾಗಿ ಸೀಮಿತಗೊಳಿಸಲು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ, ಇದು ಹಿಂದುಳಿದ ಹೊಂದಾಣಿಕೆಯ ಉಲ್ಲಂಘನೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ, ಆದರೆ ಸರಣಿಗಳೊಂದಿಗೆ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಗಮನಾರ್ಹವಾಗಿ ವೇಗಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, $GLOBALS ಗೆ ಬರೆಯುವುದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವ ಮತ್ತು ಪಾಯಿಂಟರ್ ಮೂಲಕ $GLOBALS ಅನ್ನು ರವಾನಿಸುವ ಸಾಧ್ಯತೆಯನ್ನು ಪರಿಗಣಿಸಲಾಗುತ್ತಿದೆ. 2000 ಪ್ಯಾಕೇಜ್‌ಗಳ ವಿಶ್ಲೇಷಣೆಯು ಈ ಬದಲಾವಣೆಯಿಂದ ಕೇವಲ 23 ಪ್ಯಾಕೇಜುಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ ಎಂದು ತೋರಿಸಿದೆ. ಉದಾಹರಣೆಗೆ, ಪ್ರಸ್ತಾವನೆಯನ್ನು ಅನುಮೋದಿಸಿದರೆ, 8.1 ಇನ್ನು ಮುಂದೆ ಅಂತಹ ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ: $GLOBALS = []; $GLOBALS += []; $ಗ್ಲೋಬಲ್ಸ್ =& $x; $x =& $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

DDoS ರಕ್ಷಣೆ, VPS VDS ಸರ್ವರ್‌ಗಳೊಂದಿಗೆ ಸೈಟ್‌ಗಳಿಗೆ ವಿಶ್ವಾಸಾರ್ಹ ಹೋಸ್ಟಿಂಗ್ ಅನ್ನು ಖರೀದಿಸಿ 🔥 DDoS ರಕ್ಷಣೆ, VPS VDS ಸರ್ವರ್‌ಗಳೊಂದಿಗೆ ವಿಶ್ವಾಸಾರ್ಹ ವೆಬ್‌ಸೈಟ್ ಹೋಸ್ಟಿಂಗ್ ಅನ್ನು ಖರೀದಿಸಿ | ProHoster