mirror of
https://github.com/php/doc-fr.git
synced 2026-03-23 22:52:18 +01:00
395 lines
13 KiB
XML
395 lines
13 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: f4f96ef8b2a95283c92ea2183fe1dedf06f3ad22 Maintainer: yannick Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
<!-- CREDITS: DAnnebicque -->
|
|
<chapter xml:id="language.constants" xmlns="http://docbook.org/ns/docbook">
|
|
<title>Les constantes</title>
|
|
<simpara>
|
|
Une constante est un identifiant (un nom) qui représente une valeur
|
|
simple. Comme son nom le suggère, cette valeur ne peut jamais être
|
|
modifiée durant l'exécution du script (sauf les
|
|
<link linkend="language.constants.magic">constantes magiques</link>).
|
|
Les constantes sont sensibles à la casse. Par convention,
|
|
les constantes sont toujours en majuscule.
|
|
</simpara>
|
|
|
|
<note>
|
|
<para>
|
|
Avant PHP 8.0.0, les constantes définies en utilisant la fonction
|
|
<function>define</function> peuvent être insensibles à la casse.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
Les noms de constantes suivent les mêmes règles que n'importe
|
|
quel nom en PHP. Un nom de constante valide commence par une
|
|
lettre ou un souligné, suivi d'un nombre
|
|
quelconque de lettres, chiffres ou soulignés. Sous forme d'expression
|
|
régulière, cela peut s'exprimer comme ceci :
|
|
<code>^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$</code>
|
|
</para>
|
|
<para>
|
|
Il est possible de définir une constante avec un nom réservé ou même invalide via <function>define</function>,
|
|
ces valeurs ne peuvent alors être récupérées qu'avec la fonction
|
|
<function>constant</function>. Faire ceci n'est cependant pas recommandé.
|
|
</para>
|
|
&tip.userlandnaming;
|
|
<para>
|
|
<example>
|
|
<title>Noms valides et invalides pour les constantes</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Noms valides
|
|
define("FOO", "something");
|
|
define("FOO2", "something else");
|
|
define("FOO_BAR", "something more");
|
|
|
|
// Noms invalides
|
|
define("2FOO", "something");
|
|
|
|
// Ce nom est valide, mais évitez-le:
|
|
// PHP peut un jour fournir une constante magique nommée
|
|
// ainsi, ce qui va corrompre vos scripts.
|
|
define("__FOO__", "something");
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<note>
|
|
<simpara>
|
|
Dans cette documentation, une lettre peut être un des caractères
|
|
suivants : de a à z, de A à Z et tous les caractères ASCII
|
|
de 128 à 255 (<literal>0x80-0xff</literal>).
|
|
</simpara>
|
|
</note>
|
|
<simpara>
|
|
Tout comme les &link.superglobals;, la portée d'une constante est globale.
|
|
Les constantes peuvent être accédées depuis partout dans un script sans tenir
|
|
compte de la portée.
|
|
Pour plus d'informations sur la portée, consulter la section du manuel sur la
|
|
<link linkend="language.variables.scope">portée des variables</link>.
|
|
</simpara>
|
|
|
|
<note>
|
|
<simpara>
|
|
À partir de PHP 7.1.0, les constantes de classes peuvent définir une
|
|
visibilité de protégée ou privée, ne les rendant disponibles que dans la
|
|
portée hiérarchique de la classe où elles ont été définies.
|
|
</simpara>
|
|
</note>
|
|
|
|
<sect1 xml:id="language.constants.syntax">
|
|
<title>Syntaxe</title>
|
|
<simpara>
|
|
Les constantes peuvent être définies en utilisant le mot clé
|
|
<literal>const</literal> ou en utilisant la fonction
|
|
<function>define</function>.
|
|
Tandis que <function>define</function> permet de définir une
|
|
constante pour une expression arbitraire, le mot-clé
|
|
<literal>const</literal> a des restrictions comme indiqué
|
|
dans le paragraphe suivant.
|
|
Une fois qu'une constante est définie,
|
|
elle ne peut jamais être modifiée, ou détruite.
|
|
</simpara>
|
|
<simpara>
|
|
Lors de l'utilisation du mot-clé <literal>const</literal>,
|
|
seuls les expressions de type scalaires (<type>bool</type>,
|
|
<type>int</type>, <type>float</type> et <type>string</type>) et
|
|
des <type>array</type>s constants contenant seulement des expressions
|
|
scalaires sont acceptées.
|
|
Il est possible de définir des constantes en tant que
|
|
<type>resource</type>, mais cet usage est déconseillé,
|
|
car il peut mener à des résultats inattendus.
|
|
</simpara>
|
|
<simpara>
|
|
La valeur d'une constante est accédée simplement en spécifiant son nom.
|
|
Contrairement aux variables, une constante n'est <emphasis>pas</emphasis>
|
|
préfixée d'un <literal>$</literal>.
|
|
Il est aussi possible d'utiliser la fonction <function>constant</function>
|
|
pour lire la valeur d'une constante si son nom est obtenu dynamiquement.
|
|
La fonction <function>get_defined_constants</function> permet de connaître
|
|
la liste de toutes les constantes définies.
|
|
</simpara>
|
|
|
|
<note>
|
|
<simpara>
|
|
Les constantes et les variables globales utilisent deux espaces de
|
|
noms différents. Ce qui implique que &true; et
|
|
<varname>$TRUE</varname> sont généralement différents (en tout cas, ils
|
|
peuvent avoir des valeurs différentes).
|
|
</simpara>
|
|
</note>
|
|
|
|
<simpara>
|
|
Si une constante indéfinie est utilisée, une <classname>Error</classname> est
|
|
levée.
|
|
Avant PHP 8.0.0, les constantes indéfinies étaient interprétées comme un
|
|
mot nu de type &string;, c.-à-d. (CONSTANT vs "CONSTANT").
|
|
Cette solution de repli est dépréciée à partir de PHP 7.2.0, et une erreur de
|
|
niveau <constant>E_WARNING</constant> était émise lorsque ce cas se produisait.
|
|
Avant PHP 7.2.0, une erreur de niveau
|
|
<link linkend="ref.errorfunc">E_NOTICE</link> était émise à la place.
|
|
Voir également l'entrée du manuel qui explique pourquoi
|
|
<link linkend="language.types.array.foo-bar">$foo[bar]</link> est faux
|
|
(sauf si <literal>bar</literal> est une constante).
|
|
Ceci ne s'applique pas pour les <link
|
|
linkend="language.namespaces.rules">constantes (complètement) qualifiées</link>,
|
|
qui lèvent toujours une <classname>Error</classname>.
|
|
</simpara>
|
|
|
|
<note>
|
|
<simpara>
|
|
Pour vérifier qu'une constante est définie, utiliser la fonction <function>defined</function>.
|
|
</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
Il y a des différences entre les constantes et les variables :
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
Les constantes ne commencent pas par le signe (<literal>$</literal>).
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Les constantes sont définies et accessibles à tout endroit du code,
|
|
globalement.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Les constantes ne peuvent pas être redéfinies ou indéfinies
|
|
une fois qu'elles ont été définies.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Les constantes peuvent seulement évaluer à des valeurs scalaires ou tableaux.
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
<example>
|
|
<title>Définir une constante</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
define("CONSTANT", "Bonjour le monde.");
|
|
echo CONSTANT; // affiche "Bonjour le monde."
|
|
echo Constant; // Lève une Error : Undefined constant "Constant"
|
|
// Avant PHP 8.0.0, affiche "Constant" et émet un avertissement.
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
|
|
<para>
|
|
<example>
|
|
<title>Définir des constantes en utilisant le mot-clé <literal>const</literal></title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Simple valeur scalaire
|
|
const CONSTANT = 'Bonjour le monde !';
|
|
|
|
echo CONSTANT;
|
|
|
|
// Expression scalaire
|
|
const ANOTHER_CONST = CONSTANT.'; Au revoir le monde !';
|
|
echo ANOTHER_CONST;
|
|
|
|
const ANIMALS = array('chien', 'chat', 'oiseaux');
|
|
echo ANIMALS[1]; // affiche "chat"
|
|
|
|
// Tableaux constants
|
|
define('ANIMALS', array(
|
|
'chien',
|
|
'chat',
|
|
'oiseaux'
|
|
));
|
|
echo ANIMALS[1]; // affiche "chat"
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
Contrairement aux constantes définies en utilisant l'instruction
|
|
<function>define</function>, les constantes définies en utilisant
|
|
le mot-clé <literal>const</literal> doivent être déclarées
|
|
au plus haut niveau du contexte, car elles seront définies au moment
|
|
de la compilation. Cela signifie qu'elles ne peuvent être déclarées
|
|
à l'intérieur de fonctions, boucles, instructions
|
|
<literal>if</literal> ou
|
|
blocs <literal>try</literal>/<literal>catch</literal>.
|
|
</para>
|
|
</note>
|
|
|
|
<sect2 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><link linkend="language.oop5.constants">Les Constantes de Classe</link></member>
|
|
</simplelist>
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="language.constants.predefined">
|
|
<title>Constantes prédéfinies</title>
|
|
<simpara>
|
|
PHP fournit un grand nombre de <link
|
|
linkend="reserved.constants">constantes prédéfinies</link>. Certaines
|
|
constantes sont définies par différentes extensions, et ne seront
|
|
présentes que si ces extensions sont compilées avec PHP, ou bien
|
|
si l'extension a été chargée dynamiquement.
|
|
</simpara>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="language.constants.magic">
|
|
<title>Constantes magiques</title>
|
|
<para>
|
|
Il y a quelques constantes magiques qui changent suivant l'emplacement où
|
|
elles sont utilisées.
|
|
Par exemple, la valeur de <constant>__LINE__</constant> dépend
|
|
de la ligne où elle est utilisée dans le script.
|
|
Toutes ces constantes "magiques" sont évaluées au moment de la compilation,
|
|
contrairement aux constantes classiques, qui sont évaluées au moment de
|
|
l'exécution.
|
|
Ces constantes spéciales sont insensibles à la casse et sont les suivantes :
|
|
</para>
|
|
<para>
|
|
<table>
|
|
<title>Les constantes magiques de PHP</title>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>&Name;</entry>
|
|
<entry>&Description;</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row xml:id="constant.line">
|
|
<entry><constant>__LINE__</constant></entry>
|
|
<entry>
|
|
La ligne courante dans le fichier.
|
|
</entry>
|
|
</row>
|
|
<row xml:id="constant.file">
|
|
<entry><constant>__FILE__</constant></entry>
|
|
<entry>
|
|
Le chemin complet et le nom du fichier courant avec les
|
|
liens symboliques résolus. Si utilisé pour une
|
|
inclusion, le nom du fichier inclus est retourné.
|
|
</entry>
|
|
</row>
|
|
<row xml:id="constant.dir">
|
|
<entry><constant>__DIR__</constant></entry>
|
|
<entry>
|
|
Le dossier du fichier. Si utilisé dans une inclusion, le dossier
|
|
du fichier inclus sera retourné. C'est l'équivalent de
|
|
<literal>dirname(__FILE__)</literal>. Ce nom de dossier ne contiendra pas
|
|
de slash final, sauf si c'est le dossier racine.
|
|
</entry>
|
|
</row>
|
|
<row xml:id="constant.function">
|
|
<entry><constant>__FUNCTION__</constant></entry>
|
|
<entry>
|
|
Le nom de la fonction, ou <literal>{closure}</literal> pour les fonctions anonymes.
|
|
</entry>
|
|
</row>
|
|
<row xml:id="constant.class">
|
|
<entry><constant>__CLASS__</constant></entry>
|
|
<entry>
|
|
Le nom de la classe courante. Le nom de la
|
|
classe contient l'espace de noms dans lequel cette classe
|
|
a été déclarée (c.-à-d. <literal>Foo\Bar</literal>).
|
|
Lorsqu'elle est utilisée dans une méthode de trait,
|
|
<constant>__CLASS__</constant> est le nom de la classe dans laquelle le trait est utilisé.
|
|
</entry>
|
|
</row>
|
|
<row xml:id="constant.trait">
|
|
<entry><constant>__TRAIT__</constant></entry>
|
|
<entry>
|
|
Le nom du trait. Le nom du trait inclut l'espace de noms
|
|
dans lequel il a été déclaré (par exemple <literal>Foo\Bar</literal>).
|
|
</entry>
|
|
</row>
|
|
<row xml:id="constant.method">
|
|
<entry><constant>__METHOD__</constant></entry>
|
|
<entry>
|
|
Le nom de la méthode courante.
|
|
</entry>
|
|
</row>
|
|
<row xml:id="constant.property">
|
|
<entry><constant>__PROPERTY__</constant></entry>
|
|
<entry>
|
|
Valide uniquement à l'intérieur d'un
|
|
<link linkend="language.oop5.property-hooks">hook de propriété</link>.
|
|
Il est égal au nom de la propriété.
|
|
</entry>
|
|
</row>
|
|
<row xml:id="constant.namespace">
|
|
<entry><constant>__NAMESPACE__</constant></entry>
|
|
<entry>
|
|
Le nom de l'espace de noms courant.
|
|
</entry>
|
|
</row>
|
|
<row xml:id="constant.coloncolonclass">
|
|
<entry><constant><replaceable>ClassName</replaceable>::class</constant></entry>
|
|
<entry>
|
|
Le nom entièrement qualifié de la classe.
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</para>
|
|
|
|
<sect2 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><link linkend="language.oop5.basic.class.class">::class</link></member>
|
|
<member><function>get_class</function></member>
|
|
<member><function>get_object_vars</function></member>
|
|
<member><function>file_exists</function></member>
|
|
<member><function>function_exists</function></member>
|
|
</simplelist>
|
|
</para>
|
|
</sect2>
|
|
|
|
</sect1>
|
|
</chapter>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|