ಒಂದು ವರ್ಷದ ಅಭಿವೃದ್ಧಿಯ ನಂತರ, PHP 8.3 ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆಯನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಲಾಯಿತು. ಹೊಸ ಶಾಖೆಯು ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳ ಸರಣಿಯನ್ನು ಒಳಗೊಂಡಿದೆ, ಜೊತೆಗೆ ಹೊಂದಾಣಿಕೆಯನ್ನು ಮುರಿಯುವ ಹಲವಾರು ಬದಲಾವಣೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.
PHP 8.3 ನಲ್ಲಿ ಪ್ರಮುಖ ಬದಲಾವಣೆಗಳು:
- ಕ್ಲಾಸ್ ಕ್ಲೋನಿಂಗ್ ಸಮಯದಲ್ಲಿ, "ಓದಲು ಮಾತ್ರ" ಗುಣಲಕ್ಷಣದೊಂದಿಗೆ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಮರುಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಿದೆ. "__clone" ಕಾರ್ಯದ ಒಳಗೆ ಮಾತ್ರ ಓದಲು ಮಾತ್ರ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಅತಿಕ್ರಮಿಸಲು ಅನುಮತಿಸಲಾಗಿದೆ: ಓದಲು ಮಾತ್ರ ವರ್ಗ ಪೋಸ್ಟ್ {ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __ನಿರ್ಮಾಣ (ಸಾರ್ವಜನಿಕ ದಿನಾಂಕದ ಸಮಯ $createdAt, ) {} ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __clone() {$this->createdAt = ಹೊಸ ದಿನಾಂಕ ಸಮಯ(); // "createdAt" ಆಸ್ತಿಯನ್ನು ಓದಲು ಮಾತ್ರ ಅನುಮತಿಸಲಾಗಿದೆ. } }
- ವರ್ಗಗಳು, ಗುಣಲಕ್ಷಣಗಳು ಮತ್ತು ಎಣಿಕೆಗಳಲ್ಲಿ ಪ್ರಕಾರದ ಸೂಚನೆಯೊಂದಿಗೆ ಸ್ಥಿರಾಂಕಗಳನ್ನು ಬಳಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಒದಗಿಸಲಾಗಿದೆ: ವರ್ಗ ಫೂ {ಕಾನ್ಸ್ಟ್ ಸ್ಟ್ರಿಂಗ್ BAR = 'ಬಾಜ್'; }
- “#[ಓವರ್ರೈಡ್]” ಗುಣಲಕ್ಷಣಕ್ಕೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಅದರೊಂದಿಗೆ ಡೆವಲಪರ್ ಗುರುತಿಸಿದ ವಿಧಾನವು ಕೆಲವು ಮೂಲ ವಿಧಾನವನ್ನು ಅತಿಕ್ರಮಿಸುತ್ತದೆ ಎಂದು ಇಂಟರ್ಪ್ರಿಟರ್ಗೆ ತಿಳಿಸಬಹುದು. ಯಾವುದೇ ಅತಿಕ್ರಮಣ ಇಲ್ಲದಿದ್ದರೆ, ಇಂಟರ್ಪ್ರಿಟರ್ ದೋಷವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತಾನೆ.
- ಅರೇ ಸೂಚ್ಯಂಕವಾಗಿ ನಕಾರಾತ್ಮಕ ಮೌಲ್ಯಗಳ ನಿರ್ವಹಣೆಯನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಖಾಲಿ ರಚನೆಗೆ "-5" ಸಂಖ್ಯೆಯೊಂದಿಗೆ ಅಂಶವನ್ನು ಸೇರಿಸುವಾಗ ಮತ್ತು ಇನ್ನೊಂದು ಅಂಶವನ್ನು ಸೇರಿಸುವಾಗ, ಹಿಂದೆ ಎರಡನೇ ಅಂಶವನ್ನು "0" ಸೂಚ್ಯಂಕದೊಂದಿಗೆ ಉಳಿಸಲಾಗಿದೆ, ಆದರೆ PHP 8.3 ಆವೃತ್ತಿಯಿಂದ ಪ್ರಾರಂಭಿಸಿ ಅದನ್ನು "-4" ಸೂಚ್ಯಂಕದೊಂದಿಗೆ ಉಳಿಸಲಾಗುತ್ತದೆ. . $ಅರೇ = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // ವ್ಯೂಸ್ ಅರೇ (-5 => 'ಎ', 0 => 'ಬಿ') // ಅರೇ ಆಯಿತು (-5 => 'ಎ', -4 => 'ಬಿ')
- ಓದಲು-ಮಾತ್ರ ಕ್ರಮದಲ್ಲಿ ಅನಾಮಧೇಯ ತರಗತಿಗಳನ್ನು ರಚಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ: $class = ಹೊಸ ಓದಲು ಮಾತ್ರ ವರ್ಗ {ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __ಕನ್ಸ್ಟ್ರಕ್ಟ್(ಸಾರ್ವಜನಿಕ ಸ್ಟ್ರಿಂಗ್ $foo = 'ಬಾರ್', ) {}};
- ಡಿಕೋಡಿಂಗ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸದೆಯೇ ಸ್ಟ್ರಿಂಗ್ JSON ಸ್ವರೂಪದಲ್ಲಿದೆಯೇ ಎಂದು ತ್ವರಿತವಾಗಿ ಪರಿಶೀಲಿಸಲು json_validate() ಕಾರ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. json_validate(string $json, int $depth = 512, int $flags = 0): bool
- ಹೊಸ ವಿಧಾನಗಳನ್ನು Randomizer ವರ್ಗಕ್ಕೆ ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಹುಸಿ-ಯಾದೃಚ್ಛಿಕ ಸಂಖ್ಯೆಗಳು ಮತ್ತು ಅನುಕ್ರಮಗಳನ್ನು ಉತ್ಪಾದಿಸಲು ಉನ್ನತ-ಮಟ್ಟದ API ಅನ್ನು ಒದಗಿಸುತ್ತದೆ: ಮತ್ತೊಂದು ಸ್ಟ್ರಿಂಗ್ನಲ್ಲಿರುವ ಅಕ್ಷರಗಳನ್ನು ಯಾದೃಚ್ಛಿಕ ಕ್ರಮದಲ್ಲಿ ಬಳಸಿಕೊಂಡು ನೀಡಿದ ಗಾತ್ರದ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಉತ್ಪಾದಿಸಲು getBytesFromString; ನಿಗದಿತ ವ್ಯಾಪ್ತಿಯೊಳಗೆ ಬರುವ ಯಾದೃಚ್ಛಿಕ ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಸಂಖ್ಯೆಯನ್ನು ಉತ್ಪಾದಿಸಲು getFloat ಮತ್ತು nextFloat.
- ಡೈನಾಮಿಕ್ ಕ್ಲಾಸ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಬಳಸಿ ಸ್ಥಿರಾಂಕಗಳನ್ನು ಹಿಂಪಡೆಯುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ: ವರ್ಗ ಫೂ {ಕಾನ್ಸ್ಟ್ ಬಾರ್ = 'ಬಾರ್'; } $ಹೆಸರು = 'ಬಾರ್'; // ಹಿಂದೆ, BAR ಸ್ಥಿರತೆಯನ್ನು ಹಿಂಪಡೆಯಲು, ನೀವು ಸ್ಥಿರ (Foo:: class . '::' . $name) ಕರೆ ಮಾಡಬೇಕಾಗಿತ್ತು; // ಈಗ ಕೇವಲ Foo ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ::{$name};
- ದಿನಾಂಕಗಳು ಮತ್ತು ಸಮಯದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಕಾರ್ಯಾಚರಣೆಗಳಲ್ಲಿ ಉಂಟಾಗುವ ಸಮಸ್ಯೆಗಳ ಸಂದರ್ಭದಲ್ಲಿ ವೈಯಕ್ತಿಕ ವಿನಾಯಿತಿಗಳ ಪೀಳಿಗೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError).
- unserialize() ಕಾರ್ಯದಲ್ಲಿ ಧಾರಾವಾಹಿ ಡೇಟಾದ ಪಾರ್ಸಿಂಗ್ ಸಮಯದಲ್ಲಿ ಸಂಭವಿಸುವ ದೋಷಗಳ ಸುಧಾರಿತ ನಿರ್ವಹಣೆ. ಸಮಸ್ಯೆಗಳಿದ್ದಲ್ಲಿ, Unserialize() ಈಗ E_NOTICE ಬದಲಿಗೆ E_WARNING ಅನ್ನು ನೀಡುತ್ತದೆ.
- ಶ್ರೇಣಿ() ಕಾರ್ಯಕ್ಕೆ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲಾಗಿದೆ. ವ್ಯಾಪ್ತಿಯ ಗಡಿಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ವೇರಿಯೇಬಲ್ಗಳಲ್ಲಿ ವಸ್ತುಗಳು, ಸಂಪನ್ಮೂಲಗಳು ಅಥವಾ ಸರಣಿಗಳನ್ನು ರವಾನಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ, ಹಾಗೆಯೇ $ಸ್ಟೆಪ್ ಪ್ಯಾರಾಮೀಟರ್ನಲ್ಲಿ ಋಣಾತ್ಮಕ ಮೌಲ್ಯವನ್ನು ಅಥವಾ ಯಾವುದೇ ಪ್ಯಾರಾಮೀಟರ್ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸದ ಮೌಲ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದಾಗ ವಿನಾಯಿತಿಯನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ. ಸಂಖ್ಯೆಗಳ ಬದಲಿಗೆ ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವಾಗ ಅಕ್ಷರಗಳ ಪಟ್ಟಿಯನ್ನು ಈಗ ಔಟ್ಪುಟ್ ಮಾಡಬಹುದು (ಉದಾಹರಣೆಗೆ, "ರೇಂಜ್('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 ನಂತಹ ಬಹು-ಬೈಟ್ ಎನ್ಕೋಡಿಂಗ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.
- ವಿಧಾನಗಳಿಂದ ಮುಚ್ಚುವಿಕೆಗಳನ್ನು ರಚಿಸಲು ಮತ್ತು ಆ ಮುಚ್ಚುವಿಕೆಗಳಿಗೆ ಹೆಸರಿಸಲಾದ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ರವಾನಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. $ಪರೀಕ್ಷೆ = ಹೊಸ ಪರೀಕ್ಷೆ(); $ ಮುಚ್ಚುವಿಕೆ = $ಪರೀಕ್ಷೆ->ಮ್ಯಾಜಿಕ್(...); $ ಮುಚ್ಚುವಿಕೆ(ಎ: 'ಹಲೋ', ಬಿ: 'ವರ್ಲ್ಡ್');
- ಇಂಟರ್ಫೇಸ್ಗಳಲ್ಲಿ ಸ್ಥಿರಾಂಕಗಳ ಗೋಚರತೆಯನ್ನು ನಿರ್ವಹಿಸುವಾಗ ಬದಲಾದ ನಡವಳಿಕೆ. ಇಂಟರ್ಫೇಸ್ I {ಸಾರ್ವಜನಿಕ 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