Te whakaputanga o te Waiata 3.12, he kaitirotiro pateko mo te reo PHP. Te tuku Arepa o PHP 8.0

Kamupene Vimeo whakaputaina tuku hou o te kaitirotiro pateko Psalm 3.12, ka taea e koe te tautuhi i nga hapa maramara me nga hapa i roto i te waehere PHP, me te whakatika aunoa i etahi momo hapa. He pai te punaha mo te tautuhi i nga raru i roto i te waehere tuku iho me te waehere e whakamahi ana i nga ahuatanga hou kua whakauruhia ki nga peka hou o PHP. Ko te waehere kaupapa kua tuhia ki te PHP me te tohaina e i raro i te raihana MIT.

Ko te Waiata e whakaatu ana i te nuinga o nga raru e pa ana ki te he o te whakamahi momo, tae atu ki etahi atu hapa angamaheni. Hei tauira, kei te tautoko i nga whakatupato mo te whakaranu i nga taurangi o nga momo rereke ki tetahi korero, nga whakamatautau arorau hē (pērā i te "mehemea ($a && $a) {}", "mehemea ($a && !$a) {}" me " mēnā ( $a) {} elseif ($a) {}"), kāore i oti te arawhitinga o ngā āhuatanga ahanoa. Ka rere te kaitātari i te aratau miro-maha. Ka taea te mahi i nga matawai taapiri, e tātari ana i nga konae kua rereke mai i te karapa whakamutunga.

I tua atu, ka whakaratohia nga taputapu whakamaarama haumaru hei tuku whakamahi tuhipoka i te whakatakotoranga Docblock (“/** @var Momo */”) ki te tuku korero mo nga momo taurangi, nga uara whakahoki, nga tawhā mahi, nga ahuatanga ahanoa. Ka tautokohia hoki te tautuhi i nga momo whakamahinga me te whakamahi i nga tauākī whakapae. Hei tauira:

/** @var aho|null */
$a = foo();

/** @var aho $a */
echo strpos($a, 'kia ora');

/** @salm-assert-if-pono B $a */
taumahi isValidB(A $a): bool {
whakahokia $a instanceof B && $a-> isValid();
}

Hei whakakore i nga raruraru kua kitea, ka whakaratohia te taputapu Psalter, e tautoko ana i nga mono me te āhei te reira whakararu i nga raruraru waehere noa, te taapiri momo tuhipoka, me te mahi i nga whawhe penei i te neke i nga karaehe mai i tetahi mokowāingoa ki tetahi atu, te neke tikanga i waenga i nga karaehe, me te whakaingoa ano i nga karaehe me nga tikanga.

I roto i te putanga hou o Waiata whakatinana te kōwhiringa "--taint-analysis" ka taea e koe te whai i te hononga i waenga i nga tawhā whakauru i whakawhiwhia mai i te kaiwhakamahi (hei tauira, $_GET['ingoa']) me te whakamahi ki nga waahi e hiahia ana kia mawhiti te ahua (hei tauira, paoro "$ingoa"), tae atu ki nga mekameka aroturuki o nga taumahi takawaenga me nga waea mahi. Ko te whakamahi i nga rarangi hono $_GET, $_POST me $_COOKIE ka kiia he puna o nga raraunga kino, engari ka taea ano whakatau ake puna. Ko nga mahi e hiahia ana kia mawhiti te aroturuki ko nga mahi whakaputa ka whakaputa i nga ihirangi HTML, te taapiri i nga pane HTTP, te whakahaere patai SQL ranei.

Ka whakamahia te whakamana ina whakamahi i nga mahi penei i te echo, exec, whakauru me te pane. I te wa e tirotirohia ana te hiahia mo te mawhiti, ko nga momo raraunga penei i te tuhinga, nga aho me te SQL, HTML me te waehere Shell, nga aho me nga tawhā motuhēhēnga ka whakaarohia. Ko te aratau e whakaarohia ana ka taea e koe te tautuhi i nga whakaraeraetanga i roto i te waehere e arahi ana ki te tuhi whakawhiti-pae (XSS) me te whakakapi SQL ranei.

I tua atu, ka taea te tohu tīmata whakamātautau alpha o te peka PHP 8.0 hou. Ko te tukunga kua whakaritea mo te 26 o Noema. Ko nga mea e whai ake nei i roto i te peka hou: nga mahi auaharite:

  • Mana ake JIT whakahiato, ko te whakamahi ka pai ake te hua.
  • support momo uniana, te tautuhi i nga kohinga o nga momo momo e rua, neke atu ranei (hei tauira, “te mahi a te iwi foo(Foo|Bar $whakauru): int|float;”).
  • support huanga (nga korero) ka taea e koe te here metadata (penei i te momo korero) ki nga karaehe me te kore e whakamahi i te wetereo Docblock.
  • Whakapoto wetereo whakamāramatanga akomanga, ka taea e koe te whakakotahi i te whakamaramatanga o te kaihanga me nga taonga.
  • Momo hokinga hou - pateko.
  • Momo hou - whakauru, ka taea te whakamahi ki te whakatau mena ka whakaae tetahi mahi ki nga tawhā o nga momo rereke.
  • Nga korero maka ki te hapai i nga tuunga.
  • Mahere ngoikore ki te hanga taonga ka taea te patu i te wa o te kohikohi para (hei tauira, ki te penapena i nga keteroki kore).
  • faingamālie te whakamahi i te kupu "::class" mo nga mea (he rite ki te karanga get_class()).
  • faingamālie nga whakamaramatanga i roto i te poraka hopu o nga tuunga kaore e herea ki nga taurangi.
  • faingamālie ka waiho he piko i muri i te huānga whakamutunga i te rarangi o nga tawhā mahi.
  • Atanga hou Ka taea te aho hei tautuhi i nga momo aho, raraunga ranei ka taea te huri ki te aho (e waatea ana te tikanga __toString()).
  • Āhuahira hōu str_contains(), he tairitenga ngawari o nga strpos mo te whakatau i te puta o tetahi aho iti, me nga mahi str_starts_with() me str_ends_with() mo te tirotiro i nga whakataetae i te timatanga me te mutunga o te aho.
  • He waahanga taapiri fdiv(), e mahi ana i te mahi wehewehe me te kore e maka he hapa i te wa e wehea ana ma te kore.
  • Hurihia aho hono arorau. Hei tauira, ko te kupu ‘echo “sum:” . $a + $b' i whakamaoritia i mua ko 'echo ("sum: " . $a) + $b', i te PHP 8 ka kiia ko 'echo "sum: " . ($a + $b)’.
  • Whakapikitia te taki i nga mahi tatau me te moka, hei tauira, ko nga kupu "[] % [42]" me "$object + 4" ka puta he hapa.
  • Kua whakatinanahia he hātepee whakarite pūmau e mau tonu ai te raupapa o nga uara rite puta noa i nga rere rereke.

Source: opennet.ru

Tāpiri i te kōrero