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 = 'constant value'; 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()获取所有定义的常量 ?>
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; ?>
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 = 'java'; } echo a; //必错 ?>
2.const utilise un nom de constante ordinaire, définir peut prendre une expression comme nom
<?phpconst FOO = 'PHP'; for ($i = 0; $i < 32; ++$i) { define('PHP_' . $i, 1 << $i); } ?>
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('PHP', 1 << 5); // 正确 ?>
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’);
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 = 'BAR'; // 无效的 } // but if (...) { define('FOO', 'BAR'); // 有效的 }
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('FOO')) { define('FOO', 'BAR'); }
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('BIT_5', 1 << 5); // 一直有效
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('BIT_' . $i, 1 << $i); }
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('FOO', 'BAR', true); echo FOO; // BAR echo foo; // BAR
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’);
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有效
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('QUX', 2); // 无效 }
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!