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

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

कुञ्जी सुधारहरू PHP 7.4 मा:

  • टाइप गरिएका गुणहरू - वर्ग गुणहरू अब प्रकार घोषणाहरू समावेश गर्न सक्छन्, उदाहरणका लागि:

    वर्ग प्रयोगकर्ता {
    सार्वजनिक int $id;
    सार्वजनिक स्ट्रिङ $name;
    }

  • संक्षिप्त "fn(parameter_list) => expr" कार्यहरू परिभाषित गर्नका लागि सिन्ट्याक्स मानद्वारा स्कोप बाइन्डिङको साथ। उदाहरण को लागी, "fn($x) => $x + $y" "$fn2 = प्रकार्य ($x) प्रयोग ($y) {रिटर्न $x + $y;}" सँग मिल्दोजुल्दो छ);
  • शर्टह्यान्ड असाइनमेन्ट अपरेटर "??=" जुन पूर्वनिर्धारित मान परिभाषित गर्न प्रयोग गर्न सकिन्छ ("a ??= b" "a = a ?? b" सँग मिल्दोजुल्दो छ, यदि "a" परिभाषित गरिएको छ भने यसको मान भण्डारण गरिन्छ, र यदि परिभाषित गरिएन भने। मान तोकिएको छ "b");
  • सीमित मौका व्युत्पन्न रिटर्न प्रकारहरूमा प्रकारहरूको विरासत पदानुक्रम संरक्षण गर्दै, वा व्युत्पन्न तर्क प्रकारहरूमा मूल प्रकारहरूको पदानुक्रमलाई उल्टाउने क्षमता (सहप्रसरण फिर्ता प्रकार र तर्क प्रकार विरोधाभास)। निम्न निर्माणहरू अब PHP मा प्रयोग गर्न सकिन्छ:

    कक्षा ए {}
    कक्षा बी विस्तार गर्दछ A {}

    वर्ग निर्माता {
    सार्वजनिक कार्य विधि(): A {}
    }
    वर्ग बालउत्पादकले उत्पादक विस्तार गर्दछ {
    सार्वजनिक कार्य विधि(): B {}
    }

  • एरे भित्र अपरेटर अनप्याक गर्दै "...$var", अनुमति दिँदै नयाँ एरे परिभाषित गर्दा अवस्थित arrays को प्रतिस्थापन गर्नुहोस्;

    $parts = ['सेब', 'नाशपाती'];
    $fruits = ['केरा', 'सुन्तला', …$parts, 'तरबूज'];
    // ['केरा', 'सुन्तला', 'एप्पल', 'नाशपाती', 'तरबूज'];

  • अवसर संख्यात्मक शाब्दिक (1_000_000_00) मा सीमांककहरूको साथ ठूलो संख्याहरूको दृश्य प्रतिनिधित्व;
  • समर्थन कमजोर लिङ्कहरू, जसले तपाईंलाई कुनै वस्तुको सन्दर्भ राख्न अनुमति दिन्छ, तर फोहोर सङ्कलनकर्तालाई सम्बन्धित वस्तु मेटाउनबाट रोक्नुहोस्;
  • नयाँ संयन्त्र वस्तु क्रमिकरण (Serializable र __sleep()/__wakeup() को संयोजन), जसले Serializable इन्टरफेसलाई प्रतिस्थापन गर्यो, जुन बहिष्कृत हुनेछ;

    // वस्तुको सबै अवस्थाहरू भएको एरे फर्काउँछ;
    सार्वजनिक प्रकार्य __serialize(): array;

    // एरेबाट वस्तुको अवस्था पुनर्स्थापना गर्दछ
    सार्वजनिक प्रकार्य __unserialize(array $data): शून्य;

  • विधिबाट अपवादहरू फाल्न अनुमति दिइयो __toString();
  • वस्तु कोड क्यास प्रिलोड गर्न समर्थन थपियो। सेटिङका ​​लागि प्यारामिटर थपियो
    opcache.preload, जसको माध्यमबाट तपाईले PHP स्क्रिप्ट निर्दिष्ट गर्न सक्नुहुन्छ जुन कम्पाइल हुनेछ र सर्भर सुरु हुँदा चल्नेछ। यो स्क्रिप्टले अन्य फाइलहरूको अपकोडलाई तिनीहरूको प्रत्यक्ष समावेश मार्फत वा opcache_compile_file() प्रकार्य प्रयोग गरेर लोड गर्न सक्छ;

  • В расширение Hash добавлена функция crc32c для вычисления контрольных сумм с использованием полинома Кастаньоли;
  • पासवर्ड ह्यासिङ विधिहरू argon2i र argin2id को लागि password_hash() प्रकार्यमा समर्थन थपियो, सोडियम पुस्तकालयको कार्यान्वयनमा, यदि PHP libargon बिना निर्माण गरिएको छ;
  • थपिएको प्रकार्य mb_str_split(), str_split() सँग मिल्दोजुल्दो, तर बाइटहरूसँग होइन तर बहु-बाइट स्ट्रिङमा क्यारेक्टर पोजिसनहरूसँग सञ्चालन हुन्छ;
  • strip_tags() प्रकार्यमा अब ट्याग नामहरूको साथ एरे पास गर्ने क्षमता छ, अर्थात्। strip_tags($str, ' ') को सट्टा अब तपाईले strip_tags($str, ['a', 'p'] निर्दिष्ट गर्न सक्नुहुन्छ);
  • proc_open() ले अपरेन्डहरूलाई स्ट्रिङ चलाउनको सट्टा एरेमा सूचीबद्ध गर्न अनुमति दिन्छ, र नल फाइल वर्णनकर्ताको लागि थ्रेड रिडिरेक्शन र समर्थन पनि प्रदान गर्दछ;

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

    // शेलमा 2>&1 लाईक गर्नुहोस्
    proc_open($cmd, [1 => ['पाइप', 'w'], 2 => ['पुनर्निर्देशित', 1]], $pipes);

    // like 2>/dev/null or 2>nul in shell
    proc_open($cmd, [1 => ['पाइप', 'w'], 2 => ['null']], $pipes);

  • Firebird/Interbase, Recode र WDDX विस्तारहरू आधारभूत वितरणबाट बहिष्कृत छन्। यी विस्तारहरू अब PECL मार्फत वितरित छन्;
  • श्रेणीमा स्थानान्तरण गरियो पुरानो कोष्ठकहरू बिना नेस्टेड टर्नरी अपरेटरहरू, कर्ली ब्रेसेस (“$var{$idx}”) प्रयोग गरेर एरे तत्वहरू र स्ट्रिङहरू पहुँच गर्ने, is_real() प्रकार्य र वास्तविकमा कास्ट गर्ने, अभिभावक वर्ग बिना अभिभावक कुञ्जी शब्द प्रयोग गर्ने, प्यारामिटर allow_url_include कन्फिगरेसनहरू जस्ता सुविधाहरू। , वस्तुहरूमा array_key_exists() प्रयोग गर्दै।

    प्रकार्यहरू get_magic_quotes_gpc(), get_magic_quotes_runtime(), र
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString()।

    कार्यहरूमा गलत प्रतीकहरू प्रशोधन गर्ने प्रयास गर्दा एक अप्रचलित सुविधाको प्रयोगको बारेमा चेतावनी प्रदान गरिएको छ।
    base_convert(), bindec(), octdec() र hexdec(), र mb_ereg_replace() मा गैर-स्ट्रिङ ढाँचा निर्दिष्ट गर्दा।

स्रोत: opennet.ru

एक टिप्पणी थप्न