विकासको एक वर्ष पछि, PHP 8.2 प्रोग्रामिङ भाषाको रिलीज प्रस्तुत गरिएको थियो। नयाँ शाखामा नयाँ सुविधाहरूको श्रृंखला, साथै अनुकूलता तोड्ने धेरै परिवर्तनहरू समावेश छन्।
PHP 8.2 मा प्रमुख सुधारहरू:
- पढ्ने-मात्रको रूपमा वर्ग चिन्ह लगाउने क्षमता थपियो। त्यस्ता कक्षाहरूमा गुणहरू एक पटक मात्र सेट गर्न सकिन्छ, त्यसपछि तिनीहरू परिवर्तन गर्न सकिँदैन। पहिले, व्यक्तिगत वर्ग गुणहरू पढ्न-मात्र चिन्ह लगाउन सकिन्छ, तर अब तपाइँ एकैचोटि सबै वर्ग गुणहरूको लागि यो मोड सक्षम गर्न सक्नुहुन्छ। वर्ग स्तरमा "पढ्न मात्र" झण्डा निर्दिष्ट गर्नाले पनि गुणहरूलाई क्लासमा गतिशील रूपमा थपिनबाट रोक्छ। पढ्ने मात्र वर्ग पोस्ट { सार्वजनिक प्रकार्य __ निर्माण ( सार्वजनिक स्ट्रिङ $ शीर्षक, सार्वजनिक लेखक $ लेखक, ) {} } $ पोस्ट = नयाँ पोस्ट (/* … */); $पोस्ट->अज्ञात = 'गलत'; // त्रुटि: गतिशील सम्पत्ति पोस्ट::$ अज्ञात सिर्जना गर्न सकिँदैन
- "सत्य", "गलत" र "नल" अलग-अलग प्रकारहरू थपियो, जसले केवल एक मान्य मान लिन सक्छ र प्रयोग गरिन्छ, उदाहरणका लागि, त्रुटि समाप्ति झण्डा वा खाली मानको साथ कार्य फिर्ता गर्न। पहिले, "true", "false" र "null" लाई अन्य प्रकारहरू (उदाहरणका लागि, "string|false") सँग संयोजनमा मात्र प्रयोग गर्न सकिन्थ्यो, तर अब तिनीहरू अलग-अलग प्रयोग गर्न सकिन्छ: function alwaysFalse(): false { return false ; }
- त्रुटिको समयमा स्ट्याक ट्रेस आउटपुटमा संवेदनशील प्यारामिटरहरू फिल्टर गर्ने क्षमता प्रदान गर्दछ। त्रुटिहरूको बारेमा जानकारी स्वचालित रूपमा तेस्रो-पक्ष सेवाहरूमा पठाइँदा समस्याहरू ट्र्याक गर्ने र विकासकर्ताहरूलाई तिनीहरूको बारेमा जानकारी गराउँदा निश्चित जानकारी काट्न आवश्यक हुन सक्छ। उदाहरणका लागि, तपाईले प्रयोगकर्तानाम, पासवर्ड, र वातावरण चरहरू ट्रेसिङबाट समावेश गर्ने प्यारामिटरहरू हटाउन सक्नुहुन्छ। प्रकार्य परीक्षण ($foo, #[\SensitiveParameter] $password, $baz) { नयाँ अपवाद ('Error') फेंक गर्नुहोस्; } परीक्षण ('foo', 'पासवर्ड', 'baz'); घातक त्रुटि: पत्ता नलागेको अपवाद: test.php मा त्रुटि: 8 स्ट्याक ट्रेस: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} test.php मा फ्याँकियो लाइन 8 मा
- विशेषताहरूमा स्थिरताहरू परिभाषित गर्न अनुमति दिइएको छ (विशेषता, कोड पुन: प्रयोगको लागि एक संयन्त्र)। विशेषतामा परिभाषित स्थिरांकहरू विशेषता प्रयोग गर्ने वर्ग मार्फत पहुँच गर्न सकिन्छ (तर विशेषता नाम मार्फत होइन)। विशेषता फू { सार्वजनिक const CONSTANT = 1; सार्वजनिक प्रकार्य बार(): int {रिटर्न सेल्फ::CONSTANT; // घातक त्रुटि } } कक्षा पट्टी { Foo प्रयोग गर्नुहोस्; } var_dump(बार::CONSTANT); // १
- विच्छेदनात्मक सामान्य फारम (DNF, Disjunctive Normal Form) मा प्रकारहरू निर्दिष्ट गर्ने क्षमता थपियो, जसले तपाईंलाई प्रकारहरूको मिलन (दुई वा बढी प्रकारहरूको सङ्ग्रह) र प्रकारहरूको प्रतिच्छेदन (प्रकारहरू जसको मानहरू धेरै अन्तर्गत पर्दछन्) संयोजन गर्न अनुमति दिन्छ। एकै साथ प्रकारहरू)। वर्ग Foo { सार्वजनिक प्रकार्य पट्टी((A&B)|null $entity) { यदि ($entity === null) { रिटर्न नल; } $entity फिर्ता गर्नुहोस्; } }
- छद्म-यादृच्छिक संख्याहरू र अनुक्रमहरू उत्पन्न गर्नका लागि प्रकार्यहरू र वर्गहरूसँग नयाँ विस्तार "रेन्डम" प्रस्ताव गरिएको छ। मोड्युलले वस्तु-उन्मुख इन्टरफेस प्रदान गर्दछ, तपाईंलाई क्रिप्टोग्राफीमा प्रयोगको लागि उपयुक्त सहित स्यूडो-अनियमित संख्याहरू उत्पन्न गर्नका लागि विभिन्न इन्जिनहरू चयन गर्न अनुमति दिन्छ, र सहायक प्रकार्यहरू प्रदान गर्दछ, उदाहरणका लागि, अनियमित रूपमा एरे र स्ट्रिङहरू मिश्रण गर्न, अनियमित एरे कुञ्जीहरू चयन गर्न, तपाईंको आफ्नै स्वतन्त्र राज्यको साथ धेरै जेनेरेटरहरूको एक साथ प्रयोग। $rng = $is_production? नयाँ Random\Engine\Secure(): नयाँ Random\Engine\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_key_length।
- नयाँ विधिहरू थपियो: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype।
- गतिशील रूपमा वर्गमा गुणहरू सिर्जना गर्ने क्षमता हटाइएको छ। PHP 9.0 मा, वर्गमा प्रारम्भिक रूपमा परिभाषित नगरिएका गुणहरू पहुँच गर्दा त्रुटि (ErrorException) हुनेछ। गुणहरू सिर्जना गर्नका लागि __get र __set विधिहरू प्रदान गर्ने कक्षाहरू, वा stdClass मा गतिशील गुणहरू परिवर्तन बिना काम गर्न जारी रहनेछन्, विकासकर्तालाई लुकेका बगहरूबाट जोगाउन गैर-अवस्थित गुणहरूसँग मात्र निहित कार्यलाई समर्थन गरिनेछ। पुरानो कोडको कामलाई जोगाउनको लागि, "#[AllowDynamicProperties]" विशेषता प्रस्ताव गरिएको छ, जसले गतिशील गुणहरू प्रयोग गर्न अनुमति दिन्छ।
- "${var}" र ${(var)} अभिव्यक्ति प्रयोग गरेर चर मानहरूलाई स्ट्रिङहरूमा प्रतिस्थापन गर्ने क्षमता हटाइएको छ। सामान्यतया प्रयोग हुने "{$var}" र "$var" प्रतिस्थापनहरूको लागि समर्थन कायम राखिएको छ। उदाहरणका लागि: "हेलो {$world}"; ठीक छ "नमस्ते $world"; ठीक छ "नमस्ते ${world}"; बहिष्कृत: ${} को स्ट्रिङमा प्रयोग गर्दा रोकिएको छ
- "call_user_func($callable)" मार्फत कल गर्न सकिने तर "$callable()": "self::method" "parent::method" "static" ::method को रूपमा कल गर्न समर्थन नगर्ने आंशिक रूपमा समर्थन गरिएका कलहरू हटाइएको छ। " ["स्व", "विधि"] ["अभिभावक", "विधि"] ["स्थिर", "विधि"] ["फू", "बार:: विधि"] [नयाँ फू, "बार:: विधि" ]
- error_log_mode निर्देशन सेटिङहरूमा थपिएको छ, तपाईंलाई त्रुटि लगमा पहुँच मोड निर्धारण गर्न अनुमति दिँदै।
स्रोत: opennet.ru