PHP மொழிக்கான நிலையான பகுப்பாய்வான சங்கீதம் 3.12 இன் வெளியீடு. PHP 8.0 இன் ஆல்பா வெளியீடு

விமியோ நிறுவனம் வெளியிடப்பட்ட நிலையான பகுப்பாய்வியின் புதிய வெளியீடு சங்கீதம் 3.12, இது PHP குறியீட்டில் உள்ள வெளிப்படையான மற்றும் நுட்பமான பிழைகளை அடையாளம் காண உங்களை அனுமதிக்கிறது, அத்துடன் சில வகையான பிழைகளை தானாக சரிசெய்யவும். PHP இன் புதிய கிளைகளில் அறிமுகப்படுத்தப்பட்ட நவீன அம்சங்களைப் பயன்படுத்தும் மரபுக் குறியீடு மற்றும் குறியீட்டில் உள்ள சிக்கல்களைக் கண்டறிய இந்த அமைப்பு பொருத்தமானது. திட்டக் குறியீடு PHP இல் எழுதப்பட்டுள்ளது மற்றும் வழங்கியது MIT உரிமத்தின் கீழ்.

தவறான வகை பயன்பாட்டுடன் தொடர்புடைய பெரும்பாலான சிக்கல்களையும், பல்வேறு சிக்கல்களையும் சங்கீதம் அடையாளம் காட்டுகிறது வழக்கமான தவறுகள். எடுத்துக்காட்டாக, ஒரு வெளிப்பாட்டில் பல்வேறு வகையான மாறிகள் கலப்பது பற்றிய எச்சரிக்கைகள், தவறான தருக்க சோதனைகள் (“if ($a && $a) {}”, “if ($a && !$a) {}” மற்றும் “ என்றால் ( $a) {} elseif ($a) {}"), பொருள் பண்புகளின் முழுமையற்ற துவக்கம். பகுப்பாய்வி பல திரிக்கப்பட்ட பயன்முறையில் இயங்குகிறது. கடைசியாக ஸ்கேன் செய்ததிலிருந்து மாறிய கோப்புகளை மட்டுமே பகுப்பாய்வு செய்யும் அதிகரிக்கும் ஸ்கேன்களைச் செய்ய முடியும்.

கூடுதலாக, பாதுகாப்பான நிரலாக்க கருவிகள் அனுமதிக்கப்படுகின்றன பயன்படுத்த வடிவத்தில் சிறுகுறிப்புகள் டாக்பிளாக் (“/** @var வகை */”) மாறி வகைகள், திரும்ப மதிப்புகள், செயல்பாட்டு அளவுருக்கள், பொருள் பண்புகள் பற்றிய தகவல்களை வழங்க. வகை பயன்பாட்டு முறைகளை வரையறுத்தல் மற்றும் உறுதியான அறிக்கைகளைப் பயன்படுத்துதல் ஆகியவை ஆதரிக்கப்படுகின்றன. உதாரணத்திற்கு:

/** @var சரம்|பூஜ்ய */
$a = foo();

/** @var சரம் $a */
எதிரொலி strpos($a, 'ஹலோ');

/** @சங்கீதம்-உறுதியாக இருந்தால்-உண்மை B $a */
செயல்பாடு ValidB(A $a) : bool {
B && $a->isValid() நிகழ்வின் $a-ஐத் திருப்பித் தரவும்;
}

கண்டறியப்பட்ட சிக்கல்களை நீக்குவதை தானியக்கமாக்க, சால்டர் பயன்பாடு வழங்கப்படுகிறது, இது செருகுநிரல்களை ஆதரிக்கிறது மற்றும் அது அனுமதிக்கிறது பொதுவான குறியீடு சிக்கல்களைச் சரிசெய்தல், வகை சிறுகுறிப்புகளைச் சேர்ப்பது மற்றும் வகுப்புகளை ஒரு பெயர்வெளியில் இருந்து மற்றொன்றுக்கு நகர்த்துதல், வகுப்புகளுக்கு இடையேயான முறைகளை நகர்த்துதல் மற்றும் வகுப்புகள் மற்றும் முறைகளை மறுபெயரிடுதல் போன்ற கையாளுதல்களைச் செய்யவும்.

சங்கீதம் புதிய இதழில் செயல்படுத்தப்பட்டது "--taint-analysis" விருப்பம், பயனரிடமிருந்து பெறப்பட்ட உள்ளீட்டு அளவுருக்கள் (உதாரணமாக, $_GET['name']) மற்றும் எழுத்துத் தப்பித்தல் தேவைப்படும் இடங்களில் அவற்றின் பயன்பாடு ஆகியவற்றுக்கு இடையேயான தொடர்பைக் கண்டறிய உங்களை அனுமதிக்கிறது (எடுத்துக்காட்டாக, எதிரொலி " $பெயர் "), இடைநிலை பணிகள் மற்றும் செயல்பாட்டு அழைப்புகளின் கண்காணிப்பு சங்கிலிகள் உட்பட. $_GET, $_POST மற்றும் $_COOKIE ஆகிய துணை வரிசைகளின் பயன்பாடு ஆபத்தான தரவுகளின் ஆதாரமாகக் கருதப்படுகிறது, ஆனால் இது சாத்தியமாகும் உறுதிப்பாடு சொந்த ஆதாரங்கள். எஸ்கேப்பிங் டிராக்கிங் தேவைப்படும் செயல்களில் HTML உள்ளடக்கத்தை உருவாக்கும், HTTP தலைப்புகளைச் சேர்க்கும் அல்லது SQL வினவல்களைச் செயல்படுத்தும் வெளியீட்டு செயல்பாடுகளும் அடங்கும்.

எதிரொலி, exec, அடங்கும் மற்றும் தலைப்பு போன்ற செயல்பாடுகளைப் பயன்படுத்தும் போது சரிபார்ப்பு பயன்படுத்தப்படுகிறது. எஸ்கேப்பிங்கின் அவசியத்தை பகுப்பாய்வு செய்யும் போது, ​​உரை, SQL உடன் சரங்கள், HTML மற்றும் ஷெல் குறியீடு போன்ற தரவு வகைகள், அங்கீகார அளவுருக்கள் கொண்ட சரங்கள் கணக்கில் எடுத்துக்கொள்ளப்படுகின்றன. முன்மொழியப்பட்ட பயன்முறையானது, குறுக்கு-தள ஸ்கிரிப்டிங் (XSS) அல்லது SQL மாற்றீட்டிற்கு வழிவகுக்கும் குறியீட்டில் உள்ள பாதிப்புகளைக் கண்டறிய உங்களை அனுமதிக்கிறது.

கூடுதலாக, அதை கவனிக்க முடியும் தொடங்கி புதிய PHP 8.0 கிளையின் ஆல்பா சோதனை. நவம்பர் 26ம் தேதி ரிலீஸ் ஆகும். புதிய கிளையில் பின்வருபவை எதிர்பார்க்கப்படுகின்றன: புதுமைகள்போன்ற:

  • சேர்ப்பதற்காக JIT தொகுப்பி, இதன் பயன்பாடு உற்பத்தித்திறனை மேம்படுத்தும்.
  • ஆதரவு தொழிற்சங்க வகைகள், இரண்டு அல்லது அதற்கு மேற்பட்ட வகைகளின் சேகரிப்புகளை வரையறுக்கிறது (உதாரணமாக, "பொது செயல்பாடு foo(Foo|Bar $input): int|float;").
  • ஆதரவு பண்புகளை டாக்பிளாக் தொடரியல் பயன்படுத்தாமல் மெட்டாடேட்டாவை (வகைத் தகவல் போன்றவை) வகுப்புகளுடன் பிணைக்க உங்களை அனுமதிக்கும் (சிறுகுறிப்புகள்).
  • சுருக்கப்பட்ட தொடரியல் வர்க்க வரையறைகள், ஒரு கட்டமைப்பாளர் மற்றும் பண்புகளின் வரையறையை இணைக்க உங்களை அனுமதிக்கிறது.
  • புதிய திரும்பும் வகை - நிலையான.
  • புதிய வகை - கலப்பு, ஒரு செயல்பாடு பல்வேறு வகையான அளவுருக்களை ஏற்கிறதா என்பதைத் தீர்மானிக்கப் பயன்படுகிறது.
  • வெளிப்பாடு தூக்கி விதிவிலக்குகளை கையாள.
  • பலவீனமான வரைபடம் குப்பை சேகரிப்பின் போது தியாகம் செய்யக்கூடிய பொருட்களை உருவாக்க (உதாரணமாக, தேவையற்ற தற்காலிக சேமிப்புகளை சேமிக்க).
  • திறன் பொருள்களுக்கு "::class" என்ற வெளிப்பாட்டைப் பயன்படுத்துதல் (get_class() என அழைப்பதற்கு ஒப்பானது).
  • திறன் மாறிகளுக்கு கட்டுப்படாத விதிவிலக்குகளின் கேட்ச் பிளாக்கில் உள்ள வரையறைகள்.
  • திறன் செயல்பாட்டு அளவுருக்களின் பட்டியலில் கடைசி உறுப்புக்குப் பிறகு கமாவை விட்டுவிடும்.
  • புதிய இடைமுகம் சரம் போடக்கூடியது சரமாக மாற்றக்கூடிய ஏதேனும் சரம் வகைகள் அல்லது தரவை அடையாளம் காண (இதற்கு __toString() முறை உள்ளது).
  • புதிய அம்சம் str_contains(), ஒரு சப்ஸ்ட்ரிங் நிகழ்வை நிர்ணயிப்பதற்கான strpos இன் எளிமைப்படுத்தப்பட்ட அனலாக், அத்துடன் str_starts_with() மற்றும் str_ends_with() செயல்பாடுகள் ஒரு சரத்தின் தொடக்கத்திலும் முடிவிலும் உள்ள பொருத்தங்களைச் சரிபார்க்கும்.
  • அம்சம் சேர்க்கப்பட்டது fdiv(), இது பூஜ்ஜியத்தால் வகுக்கும் போது பிழையைத் தூக்கி எறியாமல் ஒரு பிரிவு செயல்பாட்டைச் செய்கிறது.
  • மாற்றப்பட்டது சரம் சேரும் தர்க்கம். எடுத்துக்காட்டாக, 'எக்கோ "சம்:" என்ற வெளிப்பாடு. $a + $b' முன்பு 'எக்கோ ("தொகை: ". $a) + $b' என விளக்கப்பட்டது, மேலும் PHP 8 இல் 'எக்கோ "தொகை:" எனக் கருதப்படும். ($a + $b)'.
  • இறுகியது எண்கணிதம் மற்றும் பிட் செயல்பாடுகளைச் சரிபார்த்தல், எடுத்துக்காட்டாக, "[] % [42]" மற்றும் "$object + 4" வெளிப்பாடுகள் பிழையை ஏற்படுத்தும்.
  • செயல்படுத்தப்பட்டது ஒரே மாதிரியான மதிப்புகளின் வரிசை வெவ்வேறு ரன்களில் பாதுகாக்கப்படும் ஒரு நிலையான வரிசையாக்க வழிமுறை.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்