- Përkthimi
PHP 5.4 u publikua katër muaj më parë, kështu që ndoshta është shumë herët për të parë një version të ri të PHP. Megjithatë, unë do të doja t'i jap kujtdo që nuk është i abonuar në listën e brendshme të postimeve një pamje të vogël të asaj se si mund të duket PHP 5.5.
Sidoqoftë, është e rëndësishme të kuptohet: PHP 5.5 është ende në fazat e hershme të zhvillimit, kështu që askush nuk e di se si do të duket në fund. Gjithçka e shkruar këtu është vetëm sugjerime. Jam i sigurt se jo e gjithë kjo do të jetë në PHP 5.5, ose do të jetë, por jo në këtë formë.
Pra, mos u emociononi shumë.
Tani, pa vonesë, këtu është një listë e veçorive që janë duke u punuar në PHP 5.5:
përputhshmëria e prapambetur
Le të fillojmë me dy ndryshime që janë tashmë në master dhe ndikojnë në pajtueshmërinë e pasme (të paktën në një farë mase):Heqja e mbështetjes për Windows XP dhe 2003
Statusi: i zbritur; Përgjegjës: Pierre JoyePHP 5.5 nuk mbështet më Windows XP dhe 2003. Këto sisteme janë rreth dhjetë vjet të vjetra, kështu që PHP i ka braktisur.
Modifikuesi /e është zhvlerësuar
Karakteristika dhe klasa të reja
Më pas do të shohim disa nga veçoritë dhe klasat e reja të planifikuara:boolval ()
Statusi: i zbritur; Përgjegjëse: Jille TimmermansPHP tashmë zbaton funksionet strval, intval dhe floatval. U shtua funksioni boolval për qëndrueshmëri. Bën të njëjtën gjë si një cast (bool), por mund të përdoret si argument për një funksion tjetër.
hash_pbkdf2()
Statusi: i zbritur; Përgjegjës: Anthony FerraraShtesa në zgjerimin intl
Statusi: i zbritur; Përgjegjës: Gustavo André dos Santos LopesDo të ketë shumë përmirësime në zgjerimin intl. Për shembull, do të ketë klasa të reja IntlCalendar, IntlGregorianCalendar, IntlTimeZone, IntlBreakIterator, IntlRuleBasedBreakIterator, IntlCodePointBreakIterator. Fatkeqësisht nuk di shumë për zgjerimin intl, kështu që nëse doni të mësoni më shumë, ju rekomandoj të shikoni njoftimet e listës së postimeve për Calendar dhe BreakIterator.
array_column()
Statusi: i propozuar; Përgjegjës: Ben RamseyNdryshimet në gjuhë
Tani le të kalojmë te gjërat vërtet interesante: veçori të reja dhe përmirësime të gjuhës.Çreferencimi i vargjeve
Statusi: i zbritur; Përgjegjës: Xinchen HuiÇreferencimi i vargut do të thotë që operacionet e vargjeve mund të aplikohen në varg ose drejtpërdrejt në varg. Këtu janë dy shembuj:
Nuk mendoj se kjo veçori është shumë e dobishme në praktikë, por e bën gjuhën më të qëndrueshme. Shihni gjithashtu RFC.
vala() punon me thirrje funksioni dhe shprehje të tjera
Statusi: i zbritur; Përgjegjës: Nikita PopovAktualisht, konstrukti i gjuhës boshe() mund të përdoret vetëm me variabla, jo me shprehje. Për shembull, kodi bosh($this->getFriends()) do të shkaktojë një gabim. Në PHP 5.5 ky do të jetë kod i vlefshëm. Për më shumë informacion, shihni RFC.
Marrja e emrit të klasës plotësisht të kualifikuar
Statusi: i propozuar; Përgjegjës: Ralph SchindlerPHP 5.3 prezantoi hapësirat e emrave me aftësinë për të caktuar pseudonime më të shkurtra për klasat dhe hapësirat e emrave. Kjo nuk vlen për rreshtin e emrit të klasës:
Si zgjidhje, është propozuar një sintaksë e re, FooBar::class, e cila kthen emrin e plotë të klasës:
Më shumë shembuj në RFC.
Kapërcimi i parametrave
Statusi: i propozuar; Përgjegjës: Stas MalyshevNëse keni një funksion që merr parametra të shumtë opsionalë, aktualisht nuk ka asnjë mënyrë për të ndryshuar vetëm të fundit duke i lënë të gjithë të tjerët si parazgjedhje.
Funksioni create_query($where, $order_by, $join_type="", $execute = false, $report_errors = e vërtetë) (... )
Nuk ka asnjë mënyrë për të vendosur $report_errors = false pa përsëritur dy parazgjedhjet e tjera. Për të zgjidhur këtë problem, propozohet përdorimi i kapërcimit të parametrave:
Create_query("deleted=0", "emri", default, default, false);
Personalisht, nuk më pëlqen veçanërisht ky propozim. Sipas mendimit tim, kodi që kërkon këtë risi nuk është menduar mirë. Funksionet nuk duhet të kenë 12 parametra shtesë.
Kontrollimi i tipit për vlerat skalare
Statusi: i propozuar; Përgjegjës: Anthony FerraraKontrolli i tipit për vlerat skalare ishte planifikuar fillimisht në 5.4, por nuk u zbatua për shkak të mungesës së konsensusit. Për më shumë informacion se pse nuk është bërë ende në PHP, shihni: Lëvizjet e tipit skalar janë më të vështira nga sa mendoni.
Në PHP 5.5 diskutimi ka rifilluar dhe mendoj se ka një propozim mjaft të mirë për të kontrolluar llojin e vlerave skalare duke përdorur konvertimet e tipit.
Do të funksionojë duke hedhur vlerën e hyrjes në llojin e specifikuar, por vetëm nëse transmetimi mund të ndodhë pa humbur të dhëna. Për shembull 123 , 123.0 , "123" do të jenë të vlefshme për parametrat int, por "hello world" jo. Kjo përputhet me sjelljen e funksioneve të brendshme.
Funksioni foo(int $i) ( ... ) foo(1); // $i = 1 foo (1.0); // $i = 1 foo ("1"); // $i = 1 foo ("1abc"); // ende jo e qartë, ndoshta $i = 1 me njoftimin e daljes foo(1.5); // ende jo e qartë, ndoshta $i = 1 me njoftimin e daljes foo(); // gabim foo ("abc"); // gabim
Marrës dhe vendosës
Statusi: i propozuar; Përgjegjës: Clint PriestNëse nuk jeni adhurues i shkrimit të të gjitha metodave getXYZ() dhe setXYZ($value), atëherë ky duhet të jetë një ndryshim pozitiv për ju. Klauzola shton sintaksë të re për të specifikuar se çfarë duhet të ndodhë kur një veti shkruhet ose lexohet:
sekonda/3600; ) set ( $this->sekonda = $value * 3600; ) ) ) $timePeriod = Periudha Kohe e re; $timePeriod->orë = 10; var_dump($timePeriod->sekonda); // int(36000) var_dump($timePeriod->orë); // int (10)
Ka disa veçori të reja, të tilla si vetitë vetëm për lexim. Nëse doni të dini më shumë, shikoni RFC.
Gjeneratorë
Iteratorët përdoren rrallë në ditët e sotme, sepse zbatimi i tyre kërkon shumë kod boilerplate. Gjeneruesit duhet ta zgjidhin këtë problem duke ofruar një mënyrë të thjeshtë për të krijuar përsëritës.
Për shembull, ja se si të përcaktoni funksionin e diapazonit si një përsëritës:
Funksioni i mësipërm xrange ka të njëjtën sjellje si funksioni i intervalit të integruar me një ndryshim: në vend që të kthejë një grup me të gjitha vlerat, ai kthen një përsëritës që gjeneron vlerat në fluturim.
Për një hyrje më të thelluar të temës, mund të shikoni RFC-në.
Lista e përzgjedhjes dhe shprehjeve gjeneruese
Statusi: i propozuar; Përgjegjës: Nikita PopovZgjedhjet e listave ofrojnë një mënyrë të thjeshtë për të kryer operacione në vargje:
$firstNames = ;
Kodi i mësipërm është i barabartë me sa vijon:
$firstNames = ; foreach ($users si $user) ( $firstNames = $user->firstName; )
Ju gjithashtu mund të filtroni vargje si kjo:
$UnderageUsers = ;
Shprehjet e gjeneratorit janë shumë të ngjashme, por në vend që të kthejnë një grup, ato kthejnë një përsëritës që gjeneron vlera në fluturim.
konkluzioni
Siç mund ta shihni, ka shumë gjëra të mahnitshme që po punohen në PHP 5.5. Por siç thashë, PHP 5.5 është ende i ri, kështu që ne nuk e dimë me siguri se çfarë do të jetë dhe çfarë nuk do të jetë në të.Nëse dëshironi të qëndroni të përditësuar për mundësitë e reja ose dëshironi të ndihmoni në diskutim dhe/ose zhvillim, sigurohuni që ta bëni këtë
E imja duket si e jprofitt
por i ndava në maja dhe lugina që të mund të bëj më shumë me këtë.
Mendoj se cikli i tij është shumë më i pastër se i imi, por thjesht doja ta provoja vetë.
Mos me gjyko
Ky skenar thjesht shfaq pikat dhe zgjedh majat dhe luginat dhe u jep atyre respektivisht jeshile dhe të kuqe. Shikojeni këtë si një ndihmë vizuale. :P
$array[$i-1]; $more_than_next = $array[$i] > $array[$i+1]; $next_is_equal = $array[$i] == $array[$i+1]; if($next_is_equal) vazhdo; if($i == 0)( if($more_than_next)( $peaks = $array[$i]; $peak_keys = $i; )tjeter( $valleys = $array[$i]; $valley_keys = $i; ) )elseif($i == (count($array)-1))( if($more_than_last)( $peaks = $array[$i]; $peak_keys = $i; )else( $valleys = $array[ $i]; $valley_keys = $i; ( $valleys = $array[$i]; $valley_keys = $i; ) ) return array("peaks" => $peaks, "valleys" => $valleys, "peak_keys" => $peak_keys, "valley_keys" = > $valley_keys); ) ?> "; foreach($plot as $key => $point)( $majtas = ($key*10); $top = 400 - ($point*10); if(in_array($key, $res["peak_keys" ]) || në_array($key, $res["çelësat_valley"]))( $extreme = "