Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

PHP вСрсии 8.5 ΠΈ Π½ΠΎΠ²Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с callable-выраТСниями. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ |>, ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части callable-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с СдинствСнным ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ Π² Π½Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»Π΅Π²ΠΎΠΉ части ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ выраТСния. Π’ ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ допустимоС Π² PHP callable-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Closure, callable-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, класс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ __invoke(), ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ значСния.

ΠšΠ°ΠΆΠ΄Ρ‹Π΅ Π΄Π²Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки эквивалСнтны.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ |>

<?php

$result
= "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!" |> strlen(...);
print
$result, PHP_EOL;

$result = strlen("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!");
print
$result, PHP_EOL;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

21
21

ΠšΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ с СдинствСнным Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ бСсполСзСн, Π½ΠΎ принСсёт ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΏΡ€ΠΈ мноТСствСнных Π²Ρ‹Π·ΠΎΠ²Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° эквивалСнтны:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #2 Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ |>

<?php

$result
= "PHP Rocks"
|> htmlentities(...)
|>
str_split(...)
|> (fn(
$x) => array_map(strtoupper(...), $x))
|> (fn(
$x) => array_filter($x, fn($v) => $v != 'O'));
print_r($result);

$temp = "PHP Rocks";
$temp = htmlentities($temp);
$temp = str_split($temp);
$temp = array_map(strtoupper(...), $temp);
$temp = array_filter($temp, fn($v) => $v != 'O');
$result = $temp;
print_r($result);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

Array
(
    [0] => P
    [1] => H
    [2] => P
    [3] =>
    [4] => R
    [6] => C
    [7] => K
    [8] => S
)
Array
(
    [0] => P
    [1] => H
    [2] => P
    [3] =>
    [4] => R
    [6] => C
    [7] => K
    [8] => S
)

Π’ Π»Π΅Π²ΠΎΠΉ части ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π° Π² ΠΏΡ€Π°Π²ΠΎΠΉ β€” допустимоС Π² PHP callable-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ с двумя ΠΈΠ»ΠΈ большС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ Π²Ρ‹Π·ΠΎΠ²ΡƒΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ стандартном Π²Ρ‹Π·ΠΎΠ²Π΅ с нСдостаточным количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° нСльзя ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎ ссылкС. PHP выбросит ΠΎΡˆΠΈΠ±ΠΊΡƒ Error, Ссли Π² ΠΏΡ€Π°Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

Π‘Ρ‚Ρ€Π΅Π»ΠΎΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠžΠ‘Π―Π—ΠΠ’Π•Π›Π¬ΠΠž ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ синтаксичСской двусмыслСнности, ΠΊΠ°ΠΊ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. ΠŸΡ€ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ трСбования PHP выдаст Ρ„Π°Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы