Skip to content

Commit c1ee7d7

Browse files
author
lacatoire
committed
add translations on functional
1 parent f5efd5e commit c1ee7d7

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed

language/operators/functional.xml

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- EN-Revision: c999c7066ede7dc2df80e0bd3364bfa0ef1f9533 Maintainer: lacatoire Status: ready -->
3+
<!-- Reviewed: no -->
4+
<sect1 xml:id="language.operators.functional">
5+
<title>Opérateurs fonctionnels</title>
6+
<titleabbrev>Fonctionnels</titleabbrev>
7+
<para>
8+
PHP 8.5 et versions ultérieures prennent en charge un opérateur qui fonctionne directement
9+
sur les fonctions callables. L'opérateur <literal>|&gt;</literal>, ou « pipe », accepte
10+
une fonction callable à un seul paramètre à droite et lui transmet la valeur de gauche,
11+
le résultat étant la valeur renvoyée par la fonction callable. La fonction callable de
12+
droite peut être n'importe quelle fonction callable PHP valide : une <classname>Closure</classname>,
13+
une <link linkend="functions.first_class_callable_syntax">fonction callable de première classe
14+
</link>, un objet qui implémente <link linkend="object.invoke">__invoke()</link>, etc.
15+
</para>
16+
<para>
17+
Cela signifie que les deux lignes suivantes sont logiquement équivalentes.
18+
<example>
19+
<title>En utilisant <literal>|&gt;</literal></title>
20+
<programlisting role="php">
21+
<![CDATA[
22+
<?php
23+
$result = "Hello World" |> strlen(...);
24+
echo $result, PHP_EOL;
25+
26+
$result = strlen("Hello World");
27+
echo $result, PHP_EOL;
28+
?>
29+
]]>
30+
</programlisting>
31+
&example.outputs;
32+
<screen>
33+
<![CDATA[
34+
11
35+
11
36+
]]>
37+
</screen>
38+
</example>
39+
</para>
40+
<para>
41+
Pour un seul appel, cette fonction n'est pas particulièrement utile. Cela devient utile lorsque plusieurs appels sont enchaînés.
42+
Autrement dit, les deux fragments de code suivants sont logiquement équivalents :
43+
<example>
44+
<title>Enchaînement d'appels |&gt;</title>
45+
<programlisting role="php">
46+
<![CDATA[
47+
<?php
48+
$result = "PHP Rocks"
49+
|> htmlentities(...)
50+
|> str_split(...)
51+
|> (fn($x) => array_map(strtoupper(...), $x))
52+
|> (fn($x) => array_filter($x, fn($v) => $v != 'O'))
53+
;
54+
echo $result, PHP_EOL;
55+
56+
$temp = "PHP Rocks";
57+
$temp = htmlentities($temp);
58+
$temp = str_split($temp);
59+
$temp = array_map(strtoupper(...), $temp);
60+
$temp = array_filter($temp, fn($v) => $v != 'O');
61+
$result = $temp;
62+
echo $result, PHP_EOL;
63+
?>
64+
]]>
65+
</programlisting>
66+
&example.outputs;
67+
<screen>
68+
<![CDATA[
69+
Array
70+
(
71+
[0] => P
72+
[1] => H
73+
[2] => P
74+
[3] =>
75+
[4] => R
76+
[6] => C
77+
[7] => K
78+
[8] => S
79+
)
80+
Array
81+
(
82+
[0] => P
83+
[1] => H
84+
[2] => P
85+
[3] =>
86+
[4] => R
87+
[6] => C
88+
[7] => K
89+
[8] => S
90+
)
91+
]]>
92+
</screen>
93+
</example>
94+
</para>
95+
<para>
96+
La partie gauche de l'opérateur de pipeline peut être n'importe quelle valeur ou expression. La partie droite
97+
peut être n'importe quelle callable PHP valide acceptant un seul paramètre, ou toute expression
98+
qui s'évalue à un tel callable. Les fonctions avec plus d'un paramètre obligatoire
99+
ne sont pas autorisées et échoueront comme si la fonction était appelée normalement
100+
avec des arguments insuffisants. Les fonctions qui prennent une variable par référence ne sont pas autorisées.
101+
Si la partie droite ne s'évalue pas à une fonction valide, une erreur sera générée.
102+
</para>
103+
<note>
104+
<para>
105+
Sachez que, pour éviter toute ambiguïté syntaxique, les <link linkend="functions.arrow">fonctions fléchées<link>
106+
DOIVENT être placées entre parenthèses lorsqu'elle sont utilisées avec un opérateur de pipeline, comme dans les exemples ci-dessus.
107+
Ne pas le faire entraînera une erreur fatale.
108+
</para>
109+
</note>
110+
111+
<sect2 role="seealso">
112+
&reftitle.seealso;
113+
<para>
114+
<simplelist>
115+
<member><classname>Closure</classname></member>
116+
</simplelist>
117+
</para>
118+
</sect2>
119+
</sect1>

0 commit comments

Comments
 (0)