Maison  >  Article  >  développement back-end  >  Plusieurs problèmes auxquels il faut prêter attention lors de l'utilisation des constantes PHP

Plusieurs problèmes auxquels il faut prêter attention lors de l'utilisation des constantes PHP

伊谢尔伦
伊谢尔伦original
2017-06-29 10:41:061433parcourir

Constante contient des caractères alphanumériques et des traits de soulignement sont autorisés comme noms de constantes. Toutes les lettres des noms de constantes doivent être en majuscules. Les constantes de classe doivent être définies comme membres de la classe via const , les constantes globales définies à l'aide de definition sont fortement déconseillées

Pourquoi devriez-vous utiliser les constantes en PHP avec prudence ?

La documentation de Zend Framework écrit : Les constantes contiennent des caractères alphanumériques et des traits de soulignement, et les nombres sont autorisés comme noms de constantes. Toutes les lettres des noms de constantes doivent être en majuscules. Les constantes de classe doivent être définies en tant que membres de la classe via "const", et l'utilisation de constantes globales définies par "define" est fortement déconseillée.

En tant que framework officiel de PHP, pourquoi y a-t-il une telle exigence ?

Analysons-le ensemble.

1. La définition est sujette à des erreurs inattendues.

Les constantes PHP ne peuvent pas être modifiées ou réaffectées une fois définies. Mais que se passe-t-il s’il est à nouveau attribué ?

<?php
 define(&#39;C&#39;, 12345);
 define(&#39;C&#39;, 123);
?>

Ce code signalera une erreur de notification. La conséquence est : avant de le définir, si d'autres définissent des constantes du même nom, vous ne saurez peut-être vraiment pas quelle est la valeur à l'intérieur.

2. Comment déterminer si une constante PHP est définie ? La méthode de jugement est facile à écrire de manière incorrecte

<?php
 define(&#39;C&#39;, 12345);
 // 错误方法1,经常犯
 if (isset(C)){……}
 // 错误方法2,经常犯
 if (defined(C)){……}
 // 正确方法
 if (defined(&#39;C&#39;)){……}
?>

3. Faible efficacité d'exécution

<?php
  define(&#39;FORUM_THEME&#39;,$forum[&#39;theme&#39;]); 
  $this->display(&#39;/&#39;.FORUM_THEME.&#39;@Public:login&#39;); 
  // 系统会从整个执行流程中查找FORUM_THEME
?>

Comme PHP doit effectuer plusieurs recherches lors du traitement des constantes, l'efficacité est faible.

Résumé : Le problème avec les constantes PHP est que la méthode PHP de traitement des constantes est trop souple. Si elle peut être plus stricte, de nombreux problèmes seront évités. Dans le processus réel, n'utilisez pas de constantes si vous pouvez utiliser des variables, car les variables sont plus efficaces et plus pratiques à utiliser.

Donc si vous devez utiliser des constantes ou des variables de classe, vous pouvez utiliser la méthode suivante :

<?php
 class foo {
  const WEBSITE = "www.zhuyinghao.com";
  protected $_forum_theme;
  function name()
  {
    echo WEBSITE;
    $this->_forum_theme = $forum[&#39;theme&#39;];
  }
  function displace() 
  {
    echo $this->_forum_theme;
  }
 }
?>

L'effet lorsque le nom de la classe et la fonction avoir le même nom

En PHP 4, le constructeur d'une classe doit être le même que le nom de la classe. Le nom du constructeur de la sous-classe est le même que celui de la classe. nom de la sous-classe. Dans la sous-classe, le constructeur de la classe parent ne sera pas automatiquement implémenté. Pour exécuter le constructeur de la classe parent dans une sous-classe, vous devez exécuter une instruction similaire à la suivante :

$this->[Nom du constructeur de la classe parent ()]

In PHP 5.0 ou supérieur Ici, construct() est utilisé uniformément comme constructeur, mais il est toujours compatible avec les règles de définition du constructeur en version 4.0. Si le constructeur 4.0 et la fonction construct() sont définis, la fonction construct() est prioritaire.

Utilisez PHP EOL pour remplacer /r/n pour les sauts de ligne

Les sauts de ligne sont souvent utilisés lors de l'écriture de programmes. Utilisez la constante PHP_EOL intégrée à PHP pour les sauts de ligne.

Un petit saut de ligne, qui a différentes implémentations sur différentes plateformes. Dans le monde Unix, n est utilisé pour remplacer les sauts de ligne, mais afin de refléter la différence, Windows utilise rn. Ce qui est plus intéressant, c'est que r est utilisé sous Mac. Par conséquent, la série Unix utilise n, la série Windows utilise rn et la série Mac utilise r.

Par conséquent, le système se convertira en différents sauts de ligne en fonction du système de plateforme. Si vous souhaitez envelopper la ligne dans le navigateur, vous devez utiliser la variable PHP_EOL pour envelopper la ligne

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:
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