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

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

በ PHP 8.2 ውስጥ ቁልፍ ማሻሻያዎች፡-

  • ክፍልን እንደ ተነባቢ-ብቻ ምልክት የማድረግ ችሎታ ታክሏል። በእንደዚህ ዓይነት ክፍሎች ውስጥ ያሉ ንብረቶች አንድ ጊዜ ብቻ ሊዘጋጁ ይችላሉ, ከዚያ በኋላ ለለውጥ አይገኙም. ከዚህ ቀደም የነጠላ ክፍል ንብረቶች ተነባቢ-ብቻ ምልክት ሊደረግባቸው ይችላል፣ አሁን ግን ይህንን ሁነታ ለሁሉም ክፍል ንብረቶች በአንድ ጊዜ ማብራት ይችላሉ። በክፍል ደረጃ የ"ተነባቢ ብቻ" ባንዲራ መግለጽ እንዲሁም ተለዋዋጭ ንብረቶችን ወደ ክፍል መጨመር ያግዳል። ተነባቢ ብቻ ክፍል ልጥፍ {የህዝብ ተግባር __ኮንስትራክሽን(የወል ሕብረቁምፊ $ ርዕስ፣ ይፋዊ ደራሲ $ደራሲ፣) {} } $post = አዲስ ልጥፍ(/* … */); $post-> ያልታወቀ = 'ስህተት'; // ስህተት፡ ተለዋዋጭ ንብረት መፍጠር አልተቻለም ፖስት::$ ያልታወቀ
  • አንድ ትክክለኛ እሴት ብቻ ሊወስዱ የሚችሉ እና ለምሳሌ አንድን ተግባር ከስህተት ማቋረጫ ባንዲራ ወይም ባዶ እሴት ጋር ለመመለስ ጥቅም ላይ የሚውሉ የተለያዩ ዓይነቶች “እውነት”፣ “ሐሰት” እና “ኑል” ታክለዋል። ከዚህ ቀደም “እውነት”፣ “ሐሰት” እና “ኑል” ከሌሎች ዓይነቶች (ለምሳሌ “ሕብረቁምፊ|ውሸት”) ጋር በጥምረት ብቻ ጥቅም ላይ ሊውሉ ይችላሉ፣ አሁን ግን ለየብቻ ጥቅም ላይ ሊውሉ ይችላሉ፡ ተግባር ሁልጊዜ ሐሰት(): ሐሰት {ሐሰት መመለስ ; }
  • በስህተት ጊዜ ሚስጥራዊነት ያላቸው ቅንብሮችን በተከመረ የክትትል ውፅዓት ውስጥ የማጣራት ችሎታ ተሰጥቷል። ስለሚከሰቱ ስህተቶች መረጃ በራስ-ሰር ችግሮችን ለሚከታተሉ እና ገንቢዎችን ለሚያሳውቁ የሶስተኛ ወገን አገልግሎቶች ሲላክ የተወሰነ መረጃ መቁረጥ ሊያስፈልግ ይችላል። ለምሳሌ የተጠቃሚ ስሞችን፣ የይለፍ ቃሎችን እና የአካባቢ ተለዋዋጮችን የሚያካትቱ መለኪያዎችን ከክትትሉ ማግለል ይችላሉ። የተግባር ሙከራ($foo፣ #[\ SensitiveParameter] $password፣ $baz) {አዲስ ልዩ ('ስህተት') መጣል); } ሙከራ ('foo'፣ 'password'፣ 'baz'); ገዳይ ስህተት፡ ያልተያዘ ልዩ፡ ስህተት በፈተና ውስጥ።php፡8 ቁልል ዱካ፡ #0 test.php(11)፡ ሙከራ('foo'፣ Object(SensitiveParameterValue)፣ 'baz') #1 {ዋና} በ test.php ውስጥ ተጥሏል። በመስመር ላይ 8
  • በባህሪያት (ባህሪ፣ ኮድን እንደገና ለመጠቀም የሚያስችል ዘዴ) ውስጥ ቋሚዎችን ለመግለጽ ተፈቅዷል። በባህሪው ውስጥ የተገለጹ ቋሚዎች ባህሪውን በሚጠቀም ክፍል (ነገር ግን በባህሪው ስም) ሊገኙ ይችላሉ. ባህሪ ፉ {ህዝባዊ ኮንስታንት CONSTANT = 1; የሕዝብ ተግባር ባር(): int (ራስን መመለስ:: CONSTANT; // ገዳይ ስህተት } } ክፍል ባር {ፎ መጠቀም; } var_dump (ባር :: CONSTANT); //1
  • የዓይነቶችን አንድነት (የሁለት ወይም ከዚያ በላይ ዓይነቶች ስብስቦችን) እና የዓይነቶችን መገናኛን (እሴቶቻቸው በብዙ ስር የሚወድቁ ዓይነቶችን) እንዲያጣምሩ የሚያስችልዎ በዲስጁንሲቭ መደበኛ ቅጽ (ዲኤንኤፍ ፣ ዲስጁንቲቭ መደበኛ ፎርም) ውስጥ ዓይነቶችን የመግለጽ ችሎታ ታክሏል። ዓይነቶች በአንድ ጊዜ)። class Foo {የህዝብ ተግባር አሞሌ((A&B)|null $entity) {If ($entity === null) { መመለስ null; } $ አካልን መመለስ; }
  • አዲስ ቅጥያ “የዘፈቀደ” የውሸት የዘፈቀደ ቁጥሮችን እና ቅደም ተከተሎችን ለመፍጠር ከተግባሮች እና ክፍሎች ጋር ቀርቧል። ሞጁሉ በነገሮች ላይ ያተኮረ በይነገጽ ያቀርባል፣ ለይስሙላ የዘፈቀደ ቁጥሮችን ለማመንጨት የተለያዩ ሞተሮችን እንዲመርጡ ይፈቅድልዎታል፣ ይህም በምስጠራ ውስጥ ለመጠቀም ተስማሚ የሆኑትን ጨምሮ ፣ እና ረዳት ተግባራትን ይሰጣል ፣ ለምሳሌ ፣ ድርድሮችን እና ሕብረቁምፊዎችን በዘፈቀደ ለማደባለቅ ፣ የዘፈቀደ የድርድር ቁልፎችን መምረጥ ፣ ከራስዎ ገለልተኛ ግዛት ጋር ብዙ ጄነሬተሮችን በአንድ ጊዜ መጠቀም። $rng = $is_ምርት? አዲስ የዘፈቀደ ሞተር \ ደህንነቱ የተጠበቀ () አዲስ ራንደም ሞተር \ MT19937 (1234); $ randomizer = አዲስ የዘፈቀደ \ Randomizer ($ rng); $ randomizer-> shuffleString ('foobar');
  • የተተገበረ የአካባቢ-ገለልተኛ ጉዳይ ልወጣ። እንደ strtolower () እና strtoupper() ያሉ ተግባራት አሁን ሁልጊዜ በASCII ክልል ውስጥ ያሉትን የገጸ-ባህሪያት ሁኔታ ይለውጣሉ፣ ልክ አካባቢውን ወደ "ሐ" ሲያቀናብሩ።
  • አዲስ ተግባራት ታክለዋል፡ 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_rength።
  • አዲስ ዘዴዎች ታክለዋል: mysqli :: execute_query, ZipArchive :: getStreamIndex, ZipArchive :: getStreamName, ZipArchive :: clear Error, ReflectionFunction :: ስም-አልባ, ReflectionMethod ::ፕሮቶታይፕ.
  • በክፍል ውስጥ ንብረቶችን በተለዋዋጭ የመፍጠር ችሎታ ተቋርጧል። በ PHP 9.0 ውስጥ በመጀመሪያ ክፍል ውስጥ ያልተገለጹ ንብረቶችን መድረስ ስህተትን ያስከትላል (ErrorException)። ንብረቶችን ለመፍጠር __get እና __set ስልቶችን የሚያቀርቡ ክፍሎች ወይም በ stdClass ውስጥ ያሉ ተለዋዋጭ ባህሪያት ያለ ለውጥ መስራታቸውን ይቀጥላሉ፣ ከሌሉ ንብረቶች ጋር ስውር ስራ ብቻ የሚደገፈው ገንቢውን ከተደበቁ ስህተቶች ለመጠበቅ ነው። የድሮውን ኮድ ስራ ለማቆየት የ "#[AllowDynamicProperties]" ባህሪ ቀርቧል, ተለዋዋጭ ባህሪያትን መጠቀም ያስችላል.
  • «${var}» እና ${(var)}» አባባሎችን በመጠቀም ተለዋዋጭ እሴቶችን ወደ ሕብረቁምፊዎች የመተካት ችሎታው ተቋርጧል። በተለምዶ ጥቅም ላይ ለሚውሉ "{$var}" እና "$var" ምትክዎች ድጋፍ ተጠብቆ ቆይቷል። ለምሳሌ፡ "ጤና ይስጥልኝ {$world}"; እሺ "ሄሎ $አለም"; እሺ "ሰላም ${አለም}"; የተቋረጠ፡ ${}ን በሕብረቁምፊዎች መጠቀም ተቋርጧል
  • በ"call_user_func($callable)" በኩል ሊጠሩ የሚችሉ ከፊል የሚደገፉ ጥሪዎች ተቋርጠዋል፣ ነገር ግን በ"$callable()"፡"ራስ::ዘዴ""ወላጅ::ዘዴ" "ስታቲክ ::" በሚለው ቅጽ መደወልን አይደግፉም። ዘዴ" ["እራስ"፣ "ዘዴ"] ["ወላጅ"፣ "ዘዴ"] ["ስታቲክ"፣ "ዘዴ"] ["ፉ"፣ "ባር:: ዘዴ"] [አዲስ ፎ፣ "ባር::ዘዴ" "]
  • የስህተት_ሎግ_ሞድ መመሪያው ወደ ቅንጅቶቹ ተጨምሯል ፣ ይህም የስህተት ምዝግብ ማስታወሻውን የመዳረሻ ሁነታን እንዲወስኑ ያስችልዎታል።

ምንጭ: opennet.ru

አስተያየት ያክሉ