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

विकासको एक वर्ष पछि, PHP 8.1 प्रोग्रामिङ भाषाको रिलीज प्रस्तुत गरिएको थियो। नयाँ शाखामा नयाँ सुविधाहरूको श्रृंखला, साथै अनुकूलता तोड्ने धेरै परिवर्तनहरू समावेश छन्।

PHP 8.1 मा प्रमुख सुधारहरू:

  • गणनाका लागि समर्थन थपियो, उदाहरणका लागि, तपाईंले अब निम्न निर्माणहरू प्रयोग गर्न सक्नुहुन्छ: enum Status { case Pending; केस सक्रिय; केस संग्रहित; } वर्ग पोस्ट { सार्वजनिक प्रकार्य __ निर्माण ( निजी स्थिति $ स्थिति = स्थिति :: पेन्डिङ ; ) {} सार्वजनिक प्रकार्य सेट स्टेटस (स्थिति $ स्थिति): शून्य { // … } } $ पोस्ट->सेट स्थिति(स्थिति::सक्रिय);
  • फाइबर भनिने हल्का थ्रेडहरूको लागि समर्थन थपियो, जसले तपाईंलाई कम स्तरमा कार्यान्वयन थ्रेडहरू व्यवस्थापन गर्न अनुमति दिन्छ। फाइबर समर्थन Amphp र ReactPHP फ्रेमवर्कमा थप्ने योजना छ। $fiber = नयाँ फाइबर( प्रकार्य (): शून्य { $valueAfterResuming = फाइबर :: निलम्बन ('निलम्बन पछि'); // ... }); $valueAfterSuspending = $fiber->start(); $fiber->रिजुम ('पुनः सुरु गरेपछि');
  • Улучшена реализация кэша объектного кода (opcache), в которой появилась возможность кэширования информации о наследовании классов. Оптимизация позволила поднять производительность некоторых приложений на 5-8%. Из других оптимизаций отмечается оптимизация работы JIT, реализация поддержки JIT для архитектуры ARM64 (AArch64), ускорение разрешения имён, оптимизация библиотек timelib и ext/date, повышение производительности сериализации и десериализации, оптимизация функция get_declared_classes(), explode(), strtr(), strnatcmp(), dechex(). В общем виде отмечается повышение производительности Symfony Demo на 23.0%, а WordPress 3.5% मा।
  • arrays भित्र अनप्याकिंग अपरेटर "...$var", जसले नयाँ एरे परिभाषित गर्दा अवस्थित arrays को प्रतिस्थापन गर्न अनुमति दिन्छ, स्ट्रिङ कुञ्जीहरूलाई समर्थन गर्न विस्तार गरिएको छ (पहिले मात्र डिजिटल पहिचानकर्ताहरू समर्थित थिए)। उदाहरण को लागी, तपाइँ अब कोड मा प्रयोग गर्न सक्नुहुन्छ: $array1 = [“a” => 1]; $array2 = ["b" => 2]; $array = ["a" => 0, …$array1, …$array2]; var_dump($array); // ["a" => 1, "b" => 2]
  • यसलाई सुरुवातकर्ताहरूमा "नयाँ" कुञ्जी शब्द प्रयोग गर्न अनुमति दिइएको छ, जस्तै पूर्वनिर्धारित प्यारामिटर वा तर्क विशेषताहरूमा प्रकार्य परिभाषाहरूमा। क्लास MyController { सार्वजनिक प्रकार्य __construct( निजी लगर $logger = नयाँ NullLogger(), ) {} }
  • पढ्ने-मात्र पहुँचको लागि वर्ग गुणहरू चिन्ह लगाउन सम्भव छ (यस्ता गुणहरूमा जानकारी एक पटक मात्र लेख्न सकिन्छ, त्यसपछि यो परिवर्तनको लागि उपलब्ध हुनेछैन)। वर्ग पोष्टडाटा { सार्वजनिक प्रकार्य __ निर्माण ( सार्वजनिक पढ्न मात्र स्ट्रिङ $ शीर्षक, सार्वजनिक मात्र पढ्ने मितिTimeImmutable $date, ) {} } $पोस्ट = नयाँ पोस्ट ('शीर्षक', /* … */); $post->शीर्षक = 'अन्य'; > त्रुटि: पढ्नका लागि मात्र सम्पत्ति पोस्ट::$ शीर्षक परिमार्जन गर्न सकिँदैन
  • कल गर्न मिल्ने वस्तुहरूका लागि नयाँ सिन्ट्याक्स लागू गरिएको छ - अब एउटा प्रकार्यलाई कल गरेर र यसलाई "..." मान पास गरेर क्लोजर::fromCallable('myFunc) को सट्टा आर्गुमेन्ट (जस्तै myFunc(...) लाई पास गरेर बन्द गर्न सकिन्छ। ')): प्रकार्य foo (int $a, int $b) { /* … */ } $foo = foo(…); $foo(a: 1, b: 2);
  • छेउछाउका प्रकारहरूका लागि पूर्ण समर्थन थपियो, तपाईंलाई अवस्थितहरूलाई संयोजन गरेर नयाँ प्रकारहरू सिर्जना गर्न अनुमति दिँदै। युनियन प्रकारहरूको विपरीत, जसले दुई वा बढी प्रकारहरूको सङ्कलनलाई परिभाषित गर्दछ, प्रतिच्छेदन प्रकारहरूलाई कुनै पनि सूचीबद्ध प्रकारहरूको उपस्थिति चाहिन्छ, तर सेटमा निर्दिष्ट प्रकारहरू भर्नको लागि। प्रकार्य generateSlug(HasTitle&HasId $post) { रिटर्न strtolower($post->getTitle())। $post->getId(); }
  • त्यहाँ एउटा नयाँ प्रकार "कहिल्यै होइन" छ जुन स्थिर विश्लेषकहरूलाई सूचित गर्न प्रयोग गर्न सकिन्छ कि प्रकार्यले कार्यक्रम कार्यान्वयन समाप्त गर्नेछ, उदाहरणका लागि अपवाद फ्याँकेर वा एक्जिट प्रकार्य कार्यान्वयन गरेर। प्रकार्य dd (मिश्रित $इनपुट): कहिल्यै { निकास; }
  • एउटा नयाँ प्रकार्य array_is_list प्रस्तावित गरिएको छ, जसले तपाईंलाई array मा कुञ्जीहरू संख्यात्मक मानहरू बृद्धि गर्ने क्रममा व्यवस्थित गरिएको छ भनेर निर्धारण गर्न अनुमति दिन्छ, ० बाट सुरु हुन्छ: $list = [“a”, “b”, “c”]; array_is_list($list); // true $notAList = [0 => "a", 1 => "b", 2 => "c"]; array_is_list($notAList); // false $alsoNotAList = [“a” => “a”, “b” => “b”, “c” => “c”]; array_is_list($alsoNotAList); // गलत
  • तपाइँ अब "अन्तिम" कुञ्जी शब्द प्रयोग गर्न सक्नुहुन्छ अभिभावक वर्ग स्थिरताहरूलाई ओभरराइड हुनबाट रोक्न। वर्ग Foo { अन्तिम सार्वजनिक const X = "foo"; } क्लास बारले Foo { public const X = "bar" विस्तार गर्दछ; > घातक त्रुटि: Bar::X ले अन्तिम स्थिर Foo::X लाई ओभरराइड गर्न सक्दैन }
  • fsync र fdatasync प्रकार्यहरू डिस्क क्यासबाट बचत गर्न बल परिवर्तनहरू प्रस्तावित छन्। $file = fopen("sample.txt", "w"); fwrite($file, "केही सामग्री"); यदि (fsync($file)) { प्रतिध्वनि "फाइल सफलतापूर्वक डिस्कमा कायम राखिएको छ।"; } fclose($file);
  • पहिले प्रयोग गरिएको उपसर्ग "0" को अतिरिक्त, अक्टल संख्याहरूको लागि उपसर्गहरू "0o" र "0O" प्रयोग गर्ने क्षमता थपियो। ०१६ === ०ओ१६; // true 016 === 0O16; // सत्य
  • यो $GLOBALS को प्रयोगलाई छनौट रूपमा सीमित गर्न प्रस्ताव गरिएको छ, जसले पछाडि अनुकूलताको उल्लङ्घनको नेतृत्व गर्नेछ, तर arrays मार्फत सञ्चालनलाई उल्लेखनीय रूपमा गति दिन सम्भव बनाउनेछ। उदाहरणका लागि, $GLOBALS मा लेख्ने असक्षम गर्ने र $GLOBALS लाई सूचकद्वारा पास गर्ने सम्भावनालाई विचार गरिँदैछ। 2000 प्याकेजहरूको विश्लेषणले देखायो कि ती मध्ये 23 मात्र यस परिवर्तनबाट प्रभावित हुनेछन्। उदाहरणका लागि, यदि प्रस्ताव स्वीकृत भयो भने, 8.1 ले अब अभिव्यक्तिहरूलाई समर्थन गर्दैन जस्तै: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; अनसेट($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