(PHP 4, PHP 5, PHP 7, PHP 8)
defined — Vérifie si une constante avec le nom donné existe
Vérifie si une constante avec le nom constant_name existe.
Cette fonction fonctionne également avec les constantes de classe et les types enum.
Note:
Pour vérifier si une variable existe, utiliser isset() car defined() ne s'applique qu'aux constantes. Pour voir si une fonction existe, utiliser function_exists().
constant_nameLe nom de la constante.
Note:
defined() prend le nom comme une simple string et ne le résout pas par rapport au namespace courant : le nom est recherché dans le namespace global, si bien qu'un nom non qualifié peut silencieusement renseigner sur une constante différente de celle à laquelle le même identifiant nu ferait référence. Pour vérifier si une constante déclarée dans un namespace est définie, le namespace doit faire partie du nom, comme dans
defined('My\Namespace\MYCONST')oudefined(__NAMESPACE__ . '\MYCONST'). Le nom étant une simple chaîne de caractères, les alias introduits par les instructionsuseet le préfixenamespace\ne lui sont pas appliqués. Dans une chaîne entre guillemets doubles, les séparateurs de namespace doivent être échappés, comme dans"My\\Namespace\\MYCONST". La partie namespace du nom est insensible à la casse, le nom de la constante ne l'est pas.
Retourne true si le nom de la constante fournie par le paramètre
constant_name a été définie, false sinon.
Exemple #1 Vérifier la présence de constantes avec defined()
<?php
/* Notez que le nom de la constante est entre guillemets. Cet exemple vérifie
* si la chaîne 'TEST' est le nom de la constante nommée TEST */
if (defined('TEST')) {
echo TEST;
}
interface bar {
const test = 'foobar!';
}
class foo {
const test = 'foobar!';
}
var_dump(defined('bar::test')); // bool(true)
var_dump(defined('foo::test')); // bool(true)
?>Exemple #2 Vérification des types enum (à partir de PHP 8.1.0)
<?php
enum Suit
{
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}
var_dump(defined('Suit::Hearts')); // bool(true)
?>