विकासको एक वर्ष पछि, PHP 8.3 प्रोग्रामिङ भाषाको रिलीज प्रस्तुत गरिएको थियो। नयाँ शाखामा नयाँ सुविधाहरूको श्रृंखला, साथै अनुकूलता तोड्ने धेरै परिवर्तनहरू समावेश छन्।
PHP 8.3 मा प्रमुख परिवर्तनहरू:
- क्लास क्लोनिङको समयमा, "पढ्न मात्र" विशेषताको साथ गुणहरू पुन: सुरु गर्न सम्भव छ। ओभरराइड केवल पढ्ने गुणहरू "__क्लोन" प्रकार्य भित्र मात्र अनुमति दिइएको छ: पढ्न मात्र वर्ग पोस्ट { सार्वजनिक प्रकार्य __construct( सार्वजनिक मिति समय $createdAt, ) {} सार्वजनिक प्रकार्य __clone() { $this->createdAt = new DateTime(); // "createdAt" गुण पढ्ने मात्र भए पनि अनुमति छ। } }
- वर्गहरू, विशेषताहरू र गणनाहरूमा प्रकार सङ्केतका साथ स्थिरांकहरू प्रयोग गर्ने क्षमता प्रदान गरिएको छ: वर्ग Foo { const string BAR = 'baz'; }
- "#[ओभरराइड]" विशेषताको लागि समर्थन थपियो, जसको साथ विकासकर्ताले अनुवादकलाई सूचित गर्न सक्छ कि चिन्हित विधिले केही अभिभावक विधिलाई ओभरराइड गर्दछ। यदि कुनै ओभरराइड छैन भने, अनुवादकले त्रुटि देखाउनेछ।
- एरे अनुक्रमणिकाको रूपमा नकारात्मक मानहरूको ह्यान्डलिंग परिवर्तन गरियो। उदाहरण को लागी, जब खाली एरे मा "-5" नम्बर भएको तत्व थप्दा र अर्को तत्व थप्दा, पहिले दोस्रो तत्व अनुक्रमणिका "0" संग बचत गरिएको थियो, तर संस्करण PHP 8.3 बाट सुरु गरेर यो अनुक्रमणिका "-4" संग बचत हुनेछ। । $array = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // array थियो (-5 => 'a', 0 => 'b') // array बन्यो (-5 => 'a', -4 => 'b')
- पढ्ने-मात्र मोडमा बेनामी वर्गहरू सिर्जना गर्ने क्षमता थपियो: $class = new readonly class { सार्वजनिक प्रकार्य __construct( public string $foo = 'bar', ) {} };
- डिकोडिङ कार्यहरू नगरीकन स्ट्रिङ JSON ढाँचामा छ कि छैन भनेर द्रुत रूपमा जाँच गर्न json_validate() प्रकार्य थपियो। json_validate(string $json, int $depth = 512, int $flags = 0): bool
- Randomizer वर्गमा नयाँ विधिहरू थपिएका छन्, जसले छद्म-यादृच्छिक संख्याहरू र अनुक्रमहरू उत्पन्न गर्न उच्च-स्तर API प्रदान गर्दछ: दिइएको साइजको स्ट्रिङ उत्पन्न गर्न getBytesFromString, अर्को स्ट्रिङमा उपस्थित क्यारेक्टरहरू अनियमित क्रममा प्रयोग गरेर; गेटफ्लोट र नेक्स्टफ्लोट निर्दिष्ट दायरा भित्र पर्ने अनियमित फ्लोटिंग बिन्दु नम्बर उत्पन्न गर्न।
- डायनामिक क्लास सिन्ट्याक्स प्रयोग गरेर स्थिरांक पुन: प्राप्त गर्ने क्षमता थपियो: class Foo { const BAR = 'bar'; } $name = 'BAR'; // पहिले, BAR स्थिरता पुन: प्राप्त गर्न, तपाईंले constant (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 मान ० मा सेट गरिएको छ (०—साइज स्वतः निर्धारण हुन्छ; सीमा असक्षम गर्न, तपाइँ यसलाई -१ मा सेट गर्न सक्नुहुन्छ)।
- नयाँ POSIX प्रकार्यहरू posix_sysconf(), posix_pathconf(), posix_fpathconf() र posix_eaccess() थपियो।
- mb_str_pad प्रकार्य थपिएको छ, जुन str_pad() स्ट्रिङ प्रकार्यको एनालग हो, UTF-8 जस्ता बहु-बाइट सङ्केतनहरूसँग काम गर्न डिजाइन गरिएको।
- तपाइँलाई विधिहरूबाट बन्दहरू सिर्जना गर्न र ती बन्दहरूमा नामित तर्कहरू पास गर्न अनुमति दिन्छ। $test = नयाँ परीक्षण(); $ क्लोजर = $ परीक्षण-> जादू (…); $closure(a: 'hello', b: 'world');
- इन्टरफेसमा स्थिरताहरूको दृश्यता ह्यान्डल गर्दा व्यवहार परिवर्तन भयो। इन्टरफेस I { सार्वजनिक const FOO = 'foo'; } कक्षा C ले I { निजी const FOO = 'foo' लागू गर्दछ; }
- array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() र proc_get_status() प्रकार्यहरूको क्षमताहरू विस्तार गरिएको छ।
- mb_strimwidth() मा ऋणात्मक $widths मान पास गर्ने क्षमता हटाइएको छ। NumberFormatter::TYPE_CURRENCY स्थिरता हटाइएको छ। ldap_connect() प्रकार्यलाई दुई प्यारामिटरहरू $host र $portसँग कल गर्नको लागि समर्थन बन्द गरिएको छ। opcache.consistency_checks सेटिङ हटाइएको छ।
स्रोत: opennet.ru
