Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
256 changes: 154 additions & 102 deletions language/constants.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4c352e683436649edba35a3272210d8ca4cae611 Maintainer: lacatoire Status: ready -->
<!-- CREDITS: DAnnebicque -->
<!-- EN-Revision: 5dc21d42fd5c1a8d6b0e45869c4fe3c3ac8e9a2c Maintainer: lacatoire Status: ready -->
<chapter xml:id="language.constants" xmlns="http://docbook.org/ns/docbook" annotations="interactive">
<title>Les constantes</title>
<simpara>
Expand Down Expand Up @@ -287,113 +286,166 @@ echo ANIMALS_DEF[1] . "\n"; // affiche "chat"

<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>
<simpara>
Les constantes magiques sont des mots-clés qui sont remplacés par des
informations sur leur propre emplacement dans le code source : leur
fichier et leur ligne, ainsi que la fonction, la classe, le trait,
l'espace de noms ou le hook de propriété qui les entourent.
Malgré leur nom, ce ne sont pas de vraies constantes :
<function>defined</function> et <function>constant</function> ne les
reconnaissent pas, et une constante du même nom créée avec
<function>define</function> n'a aucun effet sur elles. Elles sont
insensibles à la casse. Lorsqu'elles sont utilisées en dehors du
contexte auquel elles se rapportent (par exemple
<constant>__CLASS__</constant> en dehors d'une classe), elles sont
remplacées par une chaîne vide.
</simpara>
<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 sur laquelle elle est écrite.
</entry>
</row>
<row xml:id="constant.file">
<entry><constant>__FILE__</constant></entry>
<entry>
Le chemin complet et le nom du fichier dans lequel elle est écrite,
avec les liens symboliques résolus.
</entry>
</row>
<row xml:id="constant.dir">
<entry><constant>__DIR__</constant></entry>
<entry>
Le dossier du fichier, équivalent à
<literal>dirname(__FILE__)</literal>. Il ne contient pas de slash
final, sauf s'il s'agit du dossier racine.
</entry>
</row>
<row xml:id="constant.function">
<entry><constant>__FUNCTION__</constant></entry>
<entry>
Le nom de la fonction dans laquelle elle est écrite, incluant son
espace de noms (par exemple <literal>Foo\bar</literal>).
À l'intérieur d'une méthode, seul le nom de la méthode.
Pour les fonctions anonymes, un nom généré par le moteur qui inclut
l'endroit où la fermeture a été définie (à partir de PHP 8.4.0 ;
auparavant <literal>{closure}</literal>).
</entry>
</row>
<row xml:id="constant.class">
<entry><constant>__CLASS__</constant></entry>
<entry>
Le nom de la classe dans laquelle elle est écrite, incluant son
espace de noms (par exemple <literal>Foo\Bar</literal>).
À l'intérieur d'un trait, le nom de la classe qui utilise le trait.
Pour les <link linkend="language.oop5.anonymous">classes
anonymes</link>, un nom généré par le moteur.
Pour obtenir le nom de la classe sur laquelle une méthode a été
appelée, utiliser
<link linkend="language.oop5.late-static-bindings"><literal>static::class</literal></link>.
</entry>
</row>
<row xml:id="constant.trait">
<entry><constant>__TRAIT__</constant></entry>
<entry>
Le nom du trait, incluant son espace de noms (par exemple
<literal>Foo\Bar</literal>).
</entry>
</row>
<row xml:id="constant.method">
<entry><constant>__METHOD__</constant></entry>
<entry>
Le nom de la classe et de la méthode dans laquelle elle est écrite
(par exemple <literal>Foo\Bar::baz</literal>).
À l'intérieur d'un trait, le nom du trait est utilisé à la place du
nom de la classe.
En dehors d'une méthode, identique à <constant>__FUNCTION__</constant>.
</entry>
</row>
<row xml:id="constant.property">
<entry><constant>__PROPERTY__</constant></entry>
<entry>
Le nom de la propriété, lorsqu'elle est utilisée à l'intérieur d'un
<link linkend="language.oop5.property-hooks">hook de propriété</link>.
À partir de PHP 8.4.0.
</entry>
</row>
<row xml:id="constant.namespace">
<entry><constant>__NAMESPACE__</constant></entry>
<entry>
Le nom de l'espace de noms courant.
</entry>
</row>
</tbody>
</tgroup>
</table>

<example>
<title>Utilisation des constantes magiques</title>
<programlisting role="php">
<![CDATA[
<?php
namespace App;

function helper()
{
echo __FUNCTION__, "\n";
echo __METHOD__, "\n";
}

trait Greets
{
public function greet()
{
echo __CLASS__, "\n";
echo __TRAIT__, "\n";
echo __METHOD__, "\n";
echo __FUNCTION__, "\n";
}
}

class Greeter
{
use Greets;
}

helper();
(new Greeter)->greet();
echo __NAMESPACE__, "\n";
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
App\helper
App\helper
App\Greeter
App\Greets
App\Greets::greet
greet
App
]]>
</screen>
</example>

<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>
<member><function>get_called_class</function></member>
<member><function>dirname</function></member>
</simplelist>
</para>
</sect2>
Expand Down
Loading