Maison développement back-end tutoriel php Explication détaillée de la différence entre const et definition en PHP

Explication détaillée de la différence entre const et definition en PHP

Dec 18, 2019 pm 04:13 PM
const define

Explication détaillée de la différence entre const et definition en PHP

Disponible lors de la définition de constantes en PHP Qu'est-ce que la différence entre const et définir ?

1. const est utilisé pour définir les variables membres de la classe. Une fois définie, sa valeur ne peut pas être modifiée. définir définit des constantes globales accessibles n'importe où.

2. Définir ne peut pas être défini dans une classe, mais const doit être défini dans une classe et les variables définies par const doivent être accessibles via le nom de la classe :: nom de la variable.

3. Les constantes const ne peuvent pas être définies dans les instructions conditionnelles.

4. const utilise un nom de constante ordinaire (scalaire statique) et définir peut utiliser n'importe quelle expression comme nom.

5. const est toujours sensible à la casse, cependant finish() peut définir des constantes insensibles à la casse via le troisième paramètre.

6. L'utilisation de const est simple et facile à lire. Il s'agit d'une structure de langage en soi, et définir est une méthode. Utiliser const pour définir est beaucoup plus rapide que définir au moment de la compilation.

Si vous définissez des constantes dans une classe, vous ne pouvez pas utiliser Définir, mais utilisez const, comme dans l'exemple suivant :

Recommandé : "Tutoriel PHP"

<?php
//在类外面通常这样定义常量
define("PHP","111cn.net");
class MyClass
{
    //常量的值将始终保持不变。在定义和使用常量的时候不需要使用$符号
    const constant = &#39;constant value&#39;;

    function showConstant() {
        echo  self::constant . "<br>";
    }
}

echo MyClass::constant . "<br>";

$classname = "MyClass";
echo $classname::constant . "<br>"; // PHP 5.3.0之后

$class = new MyClass();
$class->showConstant();
echo $class::constant."<br>"; // PHP 5.3.0之后
//print_r(get_defined_constants());  //可以用get_defined_constants()获取所有定义的常量
?>
Copier après la connexion

Généralement finish définit les constantes en dehors de la classe, const définit les constantes dans la classe et const doit être accessible via le nom de la classe :: nom de la variable. Cependant, php5.3 et supérieur prennent en charge la définition de constantes en dehors des classes via const. Voir ce qui suit. C'est OK :

<?php
   const a = "abcdef";
   echo a;
?>
Copier après la connexion

Concernant la connaissance de base des constantes, je n'entrerai pas dans les détails ici. En plus de ce qui précède, définir et const sont d'autres choses. Différences (tirées d'Internet) :

1.const ne peut pas définir de constantes dans les instructions conditionnelles, mais définir est possible, comme suit :

<?php
if(1){
   const a = &#39;java&#39;;
 }    
echo a;  //必错
?>
Copier après la connexion

2.const utilise un nom de constante ordinaire, définir peut prendre une expression comme nom

<?phpconst  FOO = &#39;PHP&#39;; 
for ($i = 0; $i < 32; ++$i) { 
    define(&#39;PHP_&#39; . $i, 1 << $i); 
} 
?>
Copier après la connexion

3.const ne peut accepter que des scalaires statiques, tandis que définir peut prendre n'importe quelle expression.

<?php
const PHP = 1 << 5; // 错误
define(&#39;PHP&#39;, 1 << 5); // 正确 
?>
Copier après la connexion

4.const lui-même est une structure de langage. Et définir est une fonction. Utiliser const est donc beaucoup plus rapide.

Les deux ont quelque chose en commun : les deux ne peuvent pas être réaffectés.

Le contenu suivant est extrait du billet de blog de Rotted_Pencil : La différence entre définir des constantes en PHP, definition() et const

Avant-propos

Lire encore une fois sur Stackoverflow aujourd'hui, je suis tombé sur un article très intéressant, alors je l'ai traduit et repris. L'article a été rédigé par NikiC, l'un des membres du développement PHP, et son autorité est sans aucun doute

Texte

En PHP5.3, il existe deux manières de définir des constantes :

1. Utilisez le mot-clé const

2. Utilisez la méthode définir()

const FOO = ‘BAR’; 
define(‘FOO’,’BAR’);
Copier après la connexion

La différence fondamentale entre les deux méthodes est que const définira une constante lorsque le code est compilé, tandis que définir will Une constante est définie uniquement lorsque le code est en cours d'exécution. Cela entraîne les inconvénients suivants de const :

const ne peut pas être utilisé dans les instructions conditionnelles. Si vous souhaitez définir une variable globale, const doit être au niveau le plus externe de tout le code :

if (...) {    
    const FOO = &#39;BAR&#39;;    // 无效的
}
// but
if (...) {
   define(&#39;FOO&#39;, &#39;BAR&#39;); // 有效的
}
Copier après la connexion

Vous pouvez demander pourquoi je veux faire cela ? L'un des exemples les plus courants est lorsque vous vérifiez si une constante a été définie :

if (!defined(&#39;FOO&#39;)) {
    define(&#39;FOO&#39;, &#39;BAR&#39;);
}
Copier après la connexion

const ne peut être utilisé que pour déclarer des variables (telles que des nombres, des chaînes ou vrai, faux, nul, FILE), et definition() peut également accepter des expressions. Cependant, après PHP5.6, const peut également accepter des expressions constantes : la dénomination constante de

const BIT_5 = 1 << 5;    // 在PHP5.6之后有效,之前无效
define(&#39;BIT_5&#39;, 1 << 5); // 一直有效
Copier après la connexion

const ne peut utiliser que du texte simple, tandis que définir() vous permet d'utiliser n'importe quelle expression pour la nommer. Cela nous permet de faire ce qui suit :

for ($i = 0; $i < 32; ++$i) {
    define(&#39;BIT_&#39; . $i, 1 << $i);
}
Copier après la connexion

les constantes définies par const sont sensibles à la casse, mais définir vous permet de désactiver la sensibilité à la casse en définissant son troisième paramètre sur true :

define(&#39;FOO&#39;, &#39;BAR&#39;, true);
echo FOO; // BAR
echo foo; // BAR
Copier après la connexion

Le ci-dessus sont les points auxquels vous devez prêter attention. Alors maintenant, je vais expliquer ce qui suit, pourquoi j'utilise personnellement toujours const lorsque les situations ci-dessus ne sont pas impliquées :

const est plus lisible et plus beau.

const définit les constantes dans l'espace de noms actuel par défaut, et l'utilisation de définir vous oblige à écrire le chemin complet de l'espace de noms entier :

namespace A\B\C; 
// 如果要定义常量 A\B\C\FOO: 
const FOO = ‘BAR’; 
define(‘A\B\C\FOO’, ‘BAR’);
Copier après la connexion

Depuis PHP5.6, les tableaux const peuvent également être définis. une constante. Define ne prend actuellement pas en charge cette fonction, mais cette fonction sera implémentée dans PHP7 :

const FOO = [1, 2, 3];    // 在PHP 5.6中有效 
define(‘FOO’, [1, 2, 3]); // 在PHP 5.6无效, 在PHP 7.0有效
Copier après la connexion

Parce que const est exécuté lors de la compilation, il est plus rapide que Define.

Particulièrement lors de l'utilisation de definition pour définir un grand nombre de constantes, PHP fonctionnera très lentement. Les gens ont même inventé des choses comme apc_load_constantshide pour éviter ce problème

Par rapport à set, const peut doubler l'efficacité de la définition des constantes (sur une machine de développement configurée avec XDebug, cette différence sera encore plus grande). Mais en termes de temps de requête, il n'y a pas de différence entre les deux (car les deux utilisent la même table de requête)

La dernière chose à noter est que const peut être utilisé en classe et en interface, tandis que Define est Ceux qui je ne peux pas faire ça :

class Foo {
    const BAR = 2; // 有效
}
class Baz {
    define(&#39;QUX&#39;, 2); // 无效
}
Copier après la connexion

Résumé

À moins que vous ayez besoin d'utiliser des expressions ou de définir des constantes dans des instructions conditionnelles, vous feriez mieux d'utiliser const uniquement pour la simple lisibilité du code !

Pour plus de connaissances sur PHP, veuillez visiter le Site Web PHP chinois !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

définirComment définir des macros multilignes définirComment définir des macros multilignes Oct 11, 2023 pm 01:24 PM

définir définit une macro multiligne en utilisant `\` pour diviser `do { \ printf("%d\n", x \ } while (0)` en plusieurs lignes pour la définition. Dans une définition de macro, la barre oblique inverse `\` doit être le dernier caractère de la définition de macro et ne peut pas être suivie d'espaces ou de commentaires. Lorsque vous utilisez `\` pour la continuation de ligne, veillez à garder le code lisible et assurez-vous qu'il y a un `\` à la fin de chaque ligne.

Explorez l'importance et le rôle de la fonction de définition en PHP Explorez l'importance et le rôle de la fonction de définition en PHP Mar 19, 2024 pm 12:12 PM

L'importance et le rôle de la fonction de définition en PHP 1. Introduction de base à la fonction de définition En PHP, la fonction de définition est une fonction clé utilisée pour définir des constantes. Les constantes ne changeront pas leurs valeurs pendant l'exécution du programme. Les constantes définies à l'aide de la fonction de définition sont accessibles tout au long du script et sont globales. 2. La syntaxe de la fonction de définition La syntaxe de base de la fonction de définition est la suivante : définir("nom constant","valeur constante&qu

Compréhension approfondie de const en langage C Compréhension approfondie de const en langage C Feb 18, 2024 pm 12:56 PM

Explication détaillée et exemples de code de const en C En langage C, le mot-clé const est utilisé pour définir des constantes, ce qui signifie que la valeur de la variable ne peut pas être modifiée lors de l'exécution du programme. Le mot-clé const peut être utilisé pour modifier les variables, les paramètres de fonction et les valeurs de retour de fonction. Cet article fournira une analyse détaillée de l'utilisation du mot-clé const en langage C et fournira des exemples de code spécifiques. variable const modifiée Lorsque const est utilisé pour modifier une variable, cela signifie que la variable est une variable en lecture seule et ne peut pas être modifiée une fois qu'une valeur lui a été attribuée. Par exemple : constante

DefineComment définir la compilation conditionnelle DefineComment définir la compilation conditionnelle Oct 11, 2023 pm 01:20 PM

La compilation DefineConditional peut être réalisée en utilisant les directives de prétraitement `#ifdef`, `#ifndef`, `#if`, `#elif`, `#else` et `#endif`.

Parlons des différences entre var, let et const (exemple de code) Parlons des différences entre var, let et const (exemple de code) Jan 06, 2023 pm 04:25 PM

Cet article vous apporte des connaissances pertinentes sur JavaScript. Il vous présente principalement les différences entre var, let et const, ainsi que la relation entre ECMAScript et JavaScript. Les amis intéressés peuvent y jeter un œil.

Comment utiliser const en langage C Comment utiliser const en langage C Sep 20, 2023 pm 01:34 PM

const est un mot-clé qui peut être utilisé pour déclarer des constantes, des modificateurs const dans les paramètres de fonction, des valeurs de retour de fonction modifiées const et des pointeurs modifiés const. Introduction détaillée : 1. Déclarer des constantes. Le mot-clé const peut être utilisé pour déclarer des constantes. La valeur de la constante ne peut pas être modifiée pendant l'exécution du programme. La constante peut être un type de données de base, tel que des entiers, des nombres à virgule flottante. caractères, etc., ou un type de données personnalisé ; 2. Le modificateur const dans les paramètres de la fonction. Le mot-clé const peut être utilisé dans les paramètres de la fonction, indiquant que le paramètre ne peut pas être modifié à l'intérieur de la fonction, etc.

18 façons de résoudre le problème de non-réponse du service audio sous Windows 11 18 façons de résoudre le problème de non-réponse du service audio sous Windows 11 Jun 05, 2023 pm 10:23 PM

La sortie et l’entrée audio nécessitent des pilotes et services spécifiques pour fonctionner comme prévu sous Windows 11. Ceux-ci finissent parfois par rencontrer des erreurs en arrière-plan, provoquant des problèmes audio comme l'absence de sortie audio, des périphériques audio manquants, un son déformé, etc. Comment réparer le service audio qui ne répond pas sous Windows 11 Nous vous recommandons de commencer par les correctifs mentionnés ci-dessous et de parcourir la liste jusqu'à ce que vous parveniez à résoudre votre problème. Le service audio peut ne plus répondre pour un certain nombre de raisons sous Windows 11. Cette liste vous aidera à vérifier et à résoudre la plupart des problèmes qui empêchent les services audio de répondre sous Windows 11. Veuillez suivre les sections pertinentes ci-dessous pour vous aider tout au long du processus. Méthode 1 : Redémarrez le service audio Vous pouvez rencontrer.

Erreur de syntaxe C++ : les objets const doivent être initialisés une fois définis. Comment y remédier ? Erreur de syntaxe C++ : les objets const doivent être initialisés une fois définis. Comment y remédier ? Aug 22, 2023 am 09:13 AM

Pour les programmeurs C++, les erreurs de syntaxe sont l’un des problèmes les plus courants. L'une des erreurs courantes est que les objets const doivent être initialisés au moment de la définition. Si vous rencontrez cette situation, comment devez-vous y faire face ? Tout d’abord, nous devons comprendre ce qu’est un objet const. Le mot-clé const est un qualificatif de type spécial en C++ qui spécifie que la valeur d'une variable ne peut pas être modifiée lors de l'exécution du programme. Ces variables sont appelées « constantes ». Si vous définissez un objet const sans l'initialiser, vous rencontrerez l'erreur ci-dessus. C'est

See all articles