Scaoileadh Salm 3.12, anailísí statach don teanga PHP. Scaoileadh alfa de PHP 8.0

Cuideachta Vimeo foilsithe scaoileadh nua anailísí statach Psalm 3.12, a ligeann duit earráidí soiléire agus subtle araon a aithint i gcód PHP, chomh maith le roinnt cineálacha earráidí a cheartú go huathoibríoch. Tá an córas oiriúnach chun fadhbanna a aithint i gcód oidhreachta agus i gcód a úsáideann gnéithe nua-aimseartha a tugadh isteach i mbrainsí nua PHP. Tá cód an tionscadail scríofa i PHP agus dáilte ag faoi ​​cheadúnas MIT.

Aithníonn Salm an chuid is mó de na fadhbanna a bhaineann le húsáid cineál mícheart, chomh maith le fadhbanna éagsúla botúin tipiciúla. Mar shampla, tacaíonn sé le rabhaidh maidir le hathróga de chineálacha éagsúla a mheascadh i slonn, tástálacha loighciúla míchearta (amhail “má ($a && $a) {}”, “má ($a && !$a) {}” agus “ má tá ( $a) {} eileif ($a) {}"), inisealú neamhiomlán airíonna oibiachta. Ritheann an anailíseoir i mód il-snáithithe. Is féidir scananna breisíocha a dhéanamh, nach ndéanann anailís ach ar chomhaid a d’athraigh ón scanadh deireanach.

Ina theannta sin, cuirtear uirlisí slán ríomhchláraithe ar fáil chun a cheadú bain úsáid as nótaí san fhormáid Docblock (“/** @var Cineál */”) chun faisnéis a sholáthar faoi chineálacha athróg, luachanna aischuir, paraiméadair feidhme, airíonna oibiachta. Tacaítear freisin le patrúin úsáide cineáil a shainiú agus ráitis dhearbhaithe a úsáid. Mar shampla:

/** @var teaghrán|null */
$a = foo();

/** @var teaghrán $a */
strpos macalla($a, 'hello');

/** @psalm-assert-más fíor B $a */
feidhm isValidB(A $a): bool {
seol ar ais $a instanceof B && $a->isValid();
}

Chun deireadh a chur le fadhbanna aimsithe a uathoibriú, soláthraítear fóntais Psalter, a thacaíonn le forlíontáin agus Ceadaíonn fabhtcheartú a dhéanamh ar fhadhbanna cód coitianta, cuir nótaí cineáil leis, agus déan ionramhálacha ar nós ranganna a aistriú ó ainmspás amháin go ceann eile, modhanna a bhogadh idir ranganna, agus ranganna agus modhanna a athainmniú.

San eagrán nua de Salm curtha i bhfeidhm Ceadaíonn an rogha " --taint-analysis" duit an gaol idir paraiméadair ionchuir a fuarthas ón úsáideoir (mar shampla, $_GET['name']) agus a n-úsáid in áiteanna a dteastaíonn éalú carachtar uathu a rianú (mar shampla, macalla " $ainm "), lena n-áirítear trí shlabhraí rianaithe de thascanna idirmheánacha agus de ghlaonna feidhme. Meastar gur foinsí sonraí a d’fhéadfadh a bheith contúirteach iad úsáid eagair chomhthiomsaitheach $_GET, $_POST agus $_COOKIE, ach is féidir freisin cinneadh de foinsí féin. I measc na ngníomhartha a éilíonn éalú rianaithe tá oibríochtaí aschuir a ghineann ábhar HTML, a chuireann ceanntásca HTTP leis, nó a fhorghníomhaíonn ceisteanna SQL.

Baintear úsáid as bailíochtú nuair a úsáidtear feidhmeanna mar macalla, exec, cuimsiú agus ceanntásc. Nuair a dhéantar anailís ar an ngá atá le héalú, cuirtear cineálacha sonraí ar nós téacs, teaghráin le cód SQL, HTML agus Shell, teaghráin le paraiméadair fíordheimhnithe san áireamh. Ligeann an modh molta duit leochaileachtaí a aithint sa chód as a dtagann scripteáil tras-láithreáin (XSS) nó ionadú SQL.

Ina theannta sin, is féidir a thabhairt faoi deara tús a chur tástáil alfa ar bhrainse nua PHP 8.0. Tá an scaoileadh sceidealta le haghaidh 26 Samhain. Táthar ag súil leis na nithe seo a leanas sa bhrainse nua: nuálaíochtaíMar:

  • Cuimsiú Tiomsaitheoir JIT, agus feabhsóidh an úsáid a bhaintear as táirgiúlacht.
  • Tacaíocht cineálacha aontas, ag sainiú bailiúcháin de dhá chineál nó níos mó (mar shampla, “foo feidhm phoiblí(Foo|Bar $input): int|snámh;”).
  • Tacaíocht tréithe (anótálacha) a ligeann duit meiteashonraí a cheangal (amhail faisnéis chineáil) le ranganna gan úsáid a bhaint as comhréir Docblock.
  • Comhréir giorraithe sainmhínithe ranga, rud a ligeann duit an sainmhíniú ar chruthaitheoir agus airíonna a chomhcheangal.
  • Cineál fillte nua - statach.
  • Cineál nua - measctha, is féidir a úsáid chun a chinneadh an nglacann feidhm paraiméadair de chineálacha éagsúla.
  • Léiriú caith chun eisceachtaí a láimhseáil.
  • LagMapa chun rudaí a chruthú ar féidir iad a íobairt le linn bailiú truflais (mar shampla, taisce gan ghá a stóráil).
  • Deiseanna ag baint úsáide as an slonn “::class” le haghaidh rudaí (cosúil le glaoch get_class()).
  • Deiseanna sainmhínithe sa bhloc gabhála ar eisceachtaí nach bhfuil ceangailte d’athróga.
  • Deiseanna ag fágáil camóg tar éis na heiliminte deiridh i liosta na bparaiméadar feidhme.
  • Comhéadan nua Teaghrán chun aon chineál teaghrán nó sonraí a aithint is féidir a thiontú go teaghrán (a bhfuil an modh __toString() ar fáil ina leith).
  • Gné nua str_cuimsíonn(), analóg simplithe de strpos chun tarlú fotheaghrán a chinneadh, chomh maith leis na feidhmeanna str_starts_with() agus str_ends_with() chun meaitseanna a sheiceáil ag tús agus ag deireadh teaghrán.
  • Feidhm curtha leis fdiv(), a dhéanann oibríocht roinnte gan earráid a chaitheamh nuair a roinntear é le nialas.
  • Athraithe loighic nascadh teaghrán. Mar shampla, an abairt 'macalla "suim:" . Léirmhíníodh $a + $b mar 'macalla ("sum: " . $a) + $b' roimhe seo, agus i PHP 8 déileálfar leis mar 'echo" sum: " . ($a + $b)'.
  • Tightened ag seiceáil oibríochtaí uimhríochta agus giotán, mar shampla, beidh earráid mar thoradh ar na sloinn "[] ​​% [42]" agus "$object + 4".
  • Curtha i bhfeidhm algartam sórtála cobhsaí ina gcaomhnaítear ord na luachanna comhionann ar fud ritheanna éagsúla.

Foinse: oscailtenet.ru

Add a comment