Մեկ տարի զարգացումից հետո ծրագրավորման լեզվի թողարկում . Նոր մասնաճյուղը ներառում է մի շարք նոր հնարավորություններ, ինչպես նաև մի քանի բեկումնային փոփոխություններ:
Բանալի PHP 7.4-ում.
- - դասի հատկությունները այժմ կարող են ներառել տիպի հայտարարություններ, օրինակ.
դասի օգտվող {
public int $id;
հանրային տող $name;
} - ֆունկցիայի սահմանման սինտաքս՝ "fn(parameter_list) => expr"՝ շրջանակի կապակցմամբ ըստ արժեքի։ Օրինակ՝ "fn($x) => $x + $y"-ը նման է "$fn2 = function ($x) use ($y) {return $x + $y;}");
- «??=", որը կարող է օգտագործվել լռելյայն արժեք սահմանելու համար («a ??= b»-ը նման է «a = a ?? b»-ին, եթե «a»-ն սահմանված է, ապա դրա արժեքը պահպանվում է, իսկ եթե սահմանված չէ՝ նշանակվում է «b»-ի արժեքը);
- Սահմանափակ տեսակների ժառանգական հիերարխիայի պահպանում դրանցից ստացված վերադարձի արժեքների տեսակներում կամ բուն տիպերի հիերարխիան հակառակը փոխակերպելու ունակությունը ստացված արգումենտների տեսակներում ( վերադարձի տեսակը և արգումենտի տեսակի հակասությունը): Հետևյալ կոնստրուկցիաներն այժմ կարող են օգտագործվել PHP-ում.
դաս A {}
B դասը ընդլայնվում է A {}դասի պրոդյուսեր {
հանրային ֆունկցիայի մեթոդ(): A {}
}
class ChildProducer extends Producer {
հանրային ֆունկցիայի մեթոդ(): B {}
} - «...$var» զանգվածների ներսում օպերատորի ապափաթեթավորում կատարել առկա զանգվածների փոխարինում նոր զանգված սահմանելիս.
$parts = ['խնձոր', 'տանձ'];
$fruits = ['բանան', 'նարնջագույն', …$parts, 'ձմերուկ'];
// ['բանան', 'նարնջագույն', 'խնձոր', 'տանձ', 'ձմերուկ']; - մեծ թվերի տեսողական ներկայացում տարանջատիչներով թվային տառերով (1_000_000_00);
- Աջակցություն , որոնք թույլ են տալիս պահպանել օբյեկտի հղումը, բայց չեն արգելափակում աղբահանի կողմից հարակից օբյեկտի հեռացումը.
- Նոր օբյեկտների սերիականացում (Serializable-ի և __sleep()/__wakeup()-ի համադրություն), որը փոխարինում է Serializable ինտերֆեյսին, որը հնացած կլինի;
// Վերադարձնում է օբյեկտի բոլոր վիճակները պարունակող զանգված։
հանրային ֆունկցիա __serialize(): զանգված;// Վերականգնում է առարկայի վիճակը զանգվածից
հանրային ֆունկցիա __unserialize (զանգված $data): void; - Թույլատրվում է մեթոդից բացառություններ գցել ;
- Ավելացվեց աջակցություն օբյեկտի կոդերի քեշը նախապես բեռնելու համար: Կազմաձևման համար ավելացվել է պարամետր:
, որի միջոցով կարող եք նշել PHP սկրիպտ, որը կկոմպիլացվի և կգործարկվի սերվերի մեկնարկի ժամանակ։ Այս սկրիպտը կարող է բեռնել այլ ֆայլերի opcode-ը՝ դրանք ուղղակիորեն ներառելով կամ օգտագործելով opcache_compile_file() ֆունկցիան։ - crc32c ֆունկցիան ավելացվել է Hash ընդլայնմանը՝ Castagnoli բազմանդամի օգտագործմամբ չեկային գումարները հաշվարկելու համար;
- password_hash() ֆունկցիան թարմացվել է՝ Sodium գրադարանի իրականացման մեջ argon2i և argin2id գաղտնաբառերի հեշավորման մեթոդները աջակցելու համար, եթե PHP-ն կառուցված է առանց libargon-ի։
- Ավելացրել է mb_str_split() ֆունկցիան, որը նման է str_split(-ին), սակայն գործում է ոչ թե բայթերի, այլ բազմաբայթանոց տողի նիշերի դիրքերի վրա;
- strip_tags() ֆունկցիան այժմ ունի թեգերի անուններով զանգված փոխանցելու հնարավորություն, այսինքն՝ strip_tags($str, ' ')-ի փոխարեն այժմ կարող եք նշել strip_tags($str, ['a', 'p']);
- proc_open()-ը թույլ է տալիս թվարկել օպերանդները զանգվածի մեջ՝ գործարկվող տող նշելու փոխարեն, ինչպես նաև իրականացնում է հոսքերը վերահղելու և զրոյական ֆայլի նկարագրիչին աջակցելու հնարավորությունը.
proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);
// Like 2>&1 shell-ում
proc_open($cmd, [1 => ['խողովակ', 'w'], 2 => ['վերահղում', 1]], $խողովակներ);// ինչպես 2>/dev/null կամ 2>nul shell-ում
proc_open ($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes); - Firebird/Interbase, Recode և WDDX ընդլայնումները հեռացվել են հիմնական բաշխումից։ Այս ընդլայնումներն այժմ տարածվում են PECL-ի միջոցով։
- Տեղափոխվել է կատեգորիա Հատկանիշներ, ինչպիսիք են ներդրված եռակի օպերատորները՝ առանց փակագծերի, զանգվածի տարրերին և տողերին մուտք գործելը՝ օգտագործելով գանգուր փակագծեր («$var{$idx}»), is_real() ֆունկցիան և իրականին անցնելը, ծնողական բանալի բառի օգտագործումը՝ առանց ծնողական դասի, allow_url_include կարգավորման տարբերակը և array_key_exists() ֆունկցիայի օգտագործումը օբյեկտների վրա։
get_magic_quotes_gpc(), get_magic_quotes_runtime() ֆունկցիաները հնացել են։
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString():Ֆունկցիաներում անվավեր նիշեր մշակելիս տրամադրվել է նախազգուշացում հնացած գործառույթի օգտագործման մասին։
base_convert(), bindec(), octdec() և hexdec(), ինչպես նաև mb_ereg_replace() ֆունկցիայում ոչ տողային ձևանմուշ նշելիս։
Source: opennet.ru
