Skip to content

Commit 46e0114

Browse files
committed
Document clamp function
1 parent f6ba1c0 commit 46e0114

File tree

1 file changed

+157
-0
lines changed

1 file changed

+157
-0
lines changed

reference/math/functions/clamp.xml

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- EN-Revision: 761d72245071f89a626903c9bcdc6aaff1252d54 Maintainer: yannick Status: ready -->
3+
<!-- Reviewed: no -->
4+
<refentry xml:id="function.clamp" xmlns="http://docbook.org/ns/docbook">
5+
<refnamediv>
6+
<refname>clamp</refname>
7+
<refpurpose>Retourne la valeur d'entrée si elle est comprise entre 2 bornes, sinon retourne la borne la plus proche</refpurpose>
8+
</refnamediv>
9+
<refsect1 role="description">
10+
&reftitle.description;
11+
<methodsynopsis>
12+
<type>mixed</type><methodname>clamp</methodname>
13+
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
14+
<methodparam><type>mixed</type><parameter>min</parameter></methodparam>
15+
<methodparam><type>mixed</type><parameter>max</parameter></methodparam>
16+
</methodsynopsis>
17+
<para>
18+
Retourne la valeur d'entrée si elle est comprise entre <parameter>min</parameter> et <parameter>max</parameter>.
19+
Si elle est inférieur à <parameter>min</parameter>, retourne <parameter>min</parameter>.
20+
Sinon retourne <parameter>max</parameter>.
21+
</para>
22+
<note>
23+
<para>
24+
Les valeurs de différents types seront comparées en utilisant
25+
les <link linkend="language.operators.comparison">règles de
26+
comparaison standard</link>. Actuellement, une chaîne non numérique
27+
sera comparée à un &integer;, comme s'il s'agissait de la valeur
28+
<literal>0</literal>, mais plusieurs &string; non-numérique seront comparées de façon
29+
alphanumérique. La valeur actuelle retournée sera du même type que
30+
l'original et aucune conversion de type ne sera appliquée.
31+
</para>
32+
</note>
33+
<caution>
34+
<simpara>
35+
Soyez prudent lorsque vous passez des arguments avec des types différents,
36+
car <function>clamp</function> peut produire des résultats imprévisibles.
37+
</simpara>
38+
</caution>
39+
</refsect1>
40+
<refsect1 role="parameters">
41+
&reftitle.parameters;
42+
<para>
43+
<variablelist>
44+
<varlistentry>
45+
<term><parameter>value</parameter></term>
46+
<listitem>
47+
<para>
48+
Toute valeur <link linkend="language.operators.comparison">comparable</link> à resserrer entre
49+
<parameter>min</parameter> et <parameter>max</parameter>.
50+
</para>
51+
</listitem>
52+
</varlistentry>
53+
<varlistentry>
54+
<term><parameter>min</parameter></term>
55+
<listitem>
56+
<para>
57+
Une valeur minimum <link linkend="language.operators.comparison">comparable</link>
58+
à laquelle contraindre <parameter>value</parameter>.
59+
</para>
60+
</listitem>
61+
</varlistentry>
62+
<varlistentry>
63+
<term><parameter>max</parameter></term>
64+
<listitem>
65+
<para>
66+
Une valeur maximum <link linkend="language.operators.comparison">comparable</link>
67+
à laquelle contraindre <parameter>value</parameter>.
68+
</para>
69+
</listitem>
70+
</varlistentry>
71+
</variablelist>
72+
</para>
73+
</refsect1>
74+
<refsect1 role="returnvalues">
75+
&reftitle.returnvalues;
76+
<para>
77+
La fonction <function>clamp</function> retourne le paramètre <parameter>value</parameter>
78+
s'il est considéré comme "entre" <parameter>min</parameter> et <parameter>max</parameter>
79+
suivant la comparaison standard.
80+
Si plusieurs valeurs de types différents sont évaluées comme étant égales
81+
(i.e. <literal>0</literal> et <literal>'abc'</literal>), la première fournie
82+
à la fonction sera retournée.
83+
</para>
84+
<para>
85+
Si <parameter>value</parameter> est <constant>NAN</constant>, alors la valeur de retour
86+
est également <constant>NAN</constant>.
87+
</para>
88+
</refsect1>
89+
90+
<refsect1 role="errors">
91+
&reftitle.errors;
92+
<para>
93+
Si <parameter>min</parameter> est supérieur à <parameter>max</parameter>,
94+
la fonction <function>clamp</function> lance une <classname>ValueError</classname>.
95+
</para>
96+
<para>
97+
Si <parameter>min</parameter> ou <parameter>max</parameter> est <constant>NAN</constant>,
98+
la fonction <function>clamp</function> lance une <classname>ValueError</classname>.
99+
</para>
100+
</refsect1>
101+
102+
<refsect1 role="examples">
103+
&reftitle.examples;
104+
<para>
105+
<example>
106+
<title>Exemple avec <function>clamp</function></title>
107+
<programlisting role="php">
108+
<![CDATA[
109+
<?php
110+
echo clamp(-5, min: 0, max: 100), PHP_EOL; // 0
111+
echo clamp(55, min: 0, max: 100), PHP_EOL; // 55
112+
echo clamp(103, min: 0, max: 100), PHP_EOL; // 100
113+
114+
echo clamp("J", min: "A", max: "F"), PHP_EOL; // "F"
115+
116+
clamp(
117+
new \DateTimeImmutable('2025-08-01'),
118+
min: new \DateTimeImmutable('2025-08-15'),
119+
max: new \DateTimeImmutable('2025-09-15'),
120+
)->format('Y-m-d'), PHP_EOL; // 2025-08-15
121+
?>
122+
]]>
123+
</programlisting>
124+
</example>
125+
</para>
126+
</refsect1>
127+
128+
<refsect1 role="seealso">
129+
&reftitle.seealso;
130+
<para>
131+
<simplelist>
132+
<member><function>min</function></member>
133+
<member><function>max</function></member>
134+
</simplelist>
135+
</para>
136+
</refsect1>
137+
</refentry>
138+
<!-- Keep this comment at the end of the file
139+
Local variables:
140+
mode: sgml
141+
sgml-omittag:t
142+
sgml-shorttag:t
143+
sgml-minimize-attributes:nil
144+
sgml-always-quote-attributes:t
145+
sgml-indent-step:1
146+
sgml-indent-data:t
147+
indent-tabs-mode:nil
148+
sgml-parent-document:nil
149+
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
150+
sgml-exposed-tags:nil
151+
sgml-local-catalogs:nil
152+
sgml-local-ecat-files:nil
153+
End:
154+
vim600: syn=xml fen fdm=syntax fdl=2 si
155+
vim: et tw=78 syn=sgml
156+
vi: ts=1 sw=1
157+
-->

0 commit comments

Comments
 (0)