PHP 7.4 የፕሮግራም አወጣጥ ቋንቋ መለቀቅ

ከአንድ አመት እድገት በኋላ ቀርቧል የፕሮግራሚንግ ቋንቋ መለቀቅ ፒኤችፒ 7.4. አዲሱ ቅርንጫፍ ተከታታይ አዳዲስ ባህሪያትን እና ተኳኋኝነትን የሚጥሱ በርካታ ለውጦችን ያካትታል።

ቁልፍ ማሻሻያዎች በ PHP 7.4:

  • የተተየቡ ንብረቶች - የክፍል ንብረቶች አሁን አይነት መግለጫዎችን ሊያካትቱ ይችላሉ፣ ለምሳሌ፡-

    የክፍል ተጠቃሚ {
    የህዝብ int $ id;
    የህዝብ ሕብረቁምፊ $ ስም;
    }

  • አጠር ያለ ተግባራትን የሚገልጽ አገባብ “fn(parameter_list) => expr” በዋጋ ማሰር። ለምሳሌ፣ “fn($x) => $x + $y” ከ “$fn2 = ተግባር ($ x) አጠቃቀም ($y) {መመለስ $x + $y;}” ጋር ይመሳሰላል፤
  • አጭር እጅ የምደባ ኦፕሬተር "??=" ነባሪ እሴትን ለመግለጽ የሚያገለግል ("a ??= b" ከ "a = a ?? b" ጋር ተመሳሳይ ነው ፣ "ሀ" ከተገለጸ እሴቱ ይከማቻል እና ካልተገለጸ እሴቱ "b" ተሰጥቷል);
  • የተወሰነ ዕድል በተገኙ የመመለሻ ዓይነቶች የውርስ ተዋረድን መጠበቅ፣ ወይም በመነጩ የመከራከሪያ ዓይነቶች ውስጥ የዋና ዓይነቶች ተዋረድን የመቀየር ችሎታ (አብሮነት የመመለሻ አይነት እና የክርክር አይነት ተቃርኖ)። የሚከተሉት ግንባታዎች አሁን በ PHP ውስጥ ጥቅም ላይ ሊውሉ ይችላሉ፡

    ክፍል A {}
    ክፍል B A ያራዝማል {}

    ክፍል አዘጋጅ {
    የህዝብ ተግባር ዘዴ()፡ A {}
    }
    ክፍል ቻይልድ አምራች አራዝሟል {
    የህዝብ ተግባር ዘዴ()፡ B {}
    }

  • በድርድር ውስጥ ኦፕሬተርን በማራገፍ ላይ “…$var”፣ መፍቀድ አዲስ ድርድር ሲገልጹ የነባር ድርድሮችን መተካት ማከናወን;

    $parts = ['ፖም'፣ 'pear'];
    $fruits = ['ሙዝ'፣ 'ብርቱካን'፣…$ክፍሎች፣ 'ሀብሃብ'];
    // ['ሙዝ'፣ 'ብርቱካንማ'፣ 'ፖም'፣ 'ፒር'፣ 'ሀብሃብ'];

  • ዕድል የትልቅ ቁጥሮች ምስላዊ ውክልና ከገደቦች ጋር በቁጥር ቀጥተኛ (1_000_000_00);
  • ድጋፍ ደካማ አገናኞች, ይህም የአንድን ነገር ማጣቀሻ እንዲይዙ ያስችልዎታል, ነገር ግን የቆሻሻ አሰባሳቢውን ተያያዥነት ያለው ነገር እንዳይሰርዝ አያግደውም;
  • አዲስ ዘዴ ነገር serialization (Serializable እና __sleep ጥምር () / __ ነቅቷል ()), ይህም Serializable በይነገጽ ተተክቷል, ይህም ተቋርጧል ይሆናል;

    // ሁሉንም የነገሩን ሁኔታ የያዘ ድርድር ይመልሳል;
    የህዝብ ተግባር __serialize (): ድርድር;

    // የአንድን ነገር ሁኔታ ከአንድ ድርድር ይመልሳል
    ይፋዊ ተግባር __ unserialize(ድርድር $ ውሂብ): ባዶ;

  • ከአንድ ዘዴ የማይካተቱ ነገሮችን ለመጣል ተፈቅዷል __ወደ ሕብረቁምፊ();
  • የነገር ኮድ መሸጎጫ አስቀድሞ ለመጫን ተጨማሪ ድጋፍ። ለማቀናበር የተጨመረው መለኪያ
    opcache.preload, በእሱ አማካኝነት አገልጋዩ ሲጀምር የሚጠናቀር እና የሚሰራውን የPHP ስክሪፕት መግለጽ ይችላሉ። ይህ ስክሪፕት የሌሎች ፋይሎችን ኦፕኮድ በቀጥታ በማካተት ወይም opcache_compile_file() ተግባርን በመጠቀም መጫን ይችላል።

  • የ Castagnoli ፖሊኖሚል በመጠቀም ቼኮችን ለማስላት crc32c ተግባር ወደ Hash ቅጥያ ታክሏል፤
  • ፒኤችፒ ያለ ሊባርጎን ከተሰራ በሶዲየም ቤተ-መጽሐፍት አተገባበር ውስጥ ለ የይለፍ ቃል ሃሽ ስልቶች argon2i እና argin2id ለpassword_hash() ተግባር ተጨምሯል።
  • የተጨመረ ተግባር 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";'], $ ገላጭዎች, $ቧንቧዎች);

    // እንደ 2>&1 በሼል ውስጥ
    proc_open($cmd, [1 => ['ቧንቧ', 'w'], 2 => ['ማዘዋወር', 1]], $ቧንቧዎች);

    // እንደ 2>/dev/null ወይም 2>ኑል በሼል
    proc_open($cmd, [1 => ['ቧንቧ', 'w'], 2 => ['null']], $ቧንቧዎች);

  • የFirebird/Interbase፣ Recode እና WDDX ቅጥያዎች ከመሠረታዊ ጥቅል የተገለሉ ናቸው። እነዚህ ቅጥያዎች አሁን በ PECL በኩል ይሰራጫሉ;
  • ወደ ምድብ ተላልፏል ጊዜው ያለፈበት እንደ የጎጆ ሶስት ኦፕሬተሮች ያለ ቅንፍ ያሉ ባህሪያት፣ የተጠማዘዘ ቅንፍ በመጠቀም የተደራጁ ኤለመንቶችን እና ሕብረቁምፊዎችን ማግኘት («$var{$idx}»)፣ is_real() እና ወደ እውነት መውሰድ፣ የወላጅ ቁልፍ ቃል ያለ ወላጅ ክፍል በመጠቀም፣ ግቤት allow_url_include ውቅሮችን በመጠቀም የድርድር_ቁልፍ_በዕቃዎች ላይ () አለ።

    ተግባሮቹ get_magic_quotes_gpc()፣ get_magic_quotes_runtime() እና
    hebrevc() ፣ convert_cyr_string() ፣ money_format() ፣ ezmlm_hash() ፣የማገገሚያ_include_ዱካ() ፣ ldap_control_paged_result_response() ፣ ldap_control_paged_ውጤት() ፣ ReflectionType ::__ወደ ሕብረቁምፊ()።

    በተግባሮች ውስጥ የተሳሳቱ ምልክቶችን ለማስኬድ በሚሞከርበት ጊዜ ጊዜ ያለፈበት ባህሪን ስለመጠቀም ማስጠንቀቂያ ተሰጥቷል።
    base_convert()፣ bindec() octdec() እና hexdec() እና በmb_ereg_replace() ውስጥ የሕብረቁምፊ ያልሆነን ስርዓተ-ጥለት ሲገልጹ።

ምንጭ: opennet.ru

አስተያየት ያክሉ