PHP 8.3 प्रोग्रामिङ भाषाको रिलीज

विकासको एक वर्ष पछि, 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

DDoS सुरक्षा, VPS VDS सर्भरहरू भएका साइटहरूको लागि भरपर्दो होस्टिङ खरिद गर्नुहोस् 🔥 DDoS सुरक्षा, VPS VDS सर्भरहरू सहितको भरपर्दो वेबसाइट होस्टिङ किन्नुहोस् | ProHoster