Maison  >  Article  >  développement back-end  >  Analyse de la différence entre les constantes personnalisées PHP et les constantes de classe

Analyse de la différence entre les constantes personnalisées PHP et les constantes de classe

伊谢尔伦
伊谢尔伦original
2017-06-29 10:16:561469parcourir

1. constante personnalisée

La valeur d'une constante ne peut être qu'une donnée scalaire (booléenne, entier, flottant et chaîne) ou nul.

Une fois qu'une constante est définie, elle ne peut pas être redéfinie ou indéfinie.

a deux méthodes de définition :

  • Utilisez la fonction define() pour définir des constantes

define('STATUS', 3); // Si le troisième paramètre est défini sur true, il n'est pas sensible à la casse

echo STATUS;

  • Utilisez le mot-clé const pour définir des constantes

const NAME = 4;

echo NAME;

Vous pouvez également utiliser la fonction constant() pour obtenir la valeur de la constante.

Utilisez la fonction définie(), pour vérifier si une constante d'un certain nom existe.


2. Constantes de classe

Vous pouvez définir des constantes dans les classes. La valeur d'une constante doit être une valeur fixe et ne peut pas être une variable, un attribut de classe ou le résultat d'autres opérations (telles que comme appels de fonction). Mais dans PHP5.6, les constantes ont été améliorées pour permettre des calculs de constantes et permettre l'utilisation d'expressions résultats contenant des nombres, des chaînesvaleurs littérales et constantes pour définir la constante const . La valeur d'une constante peut également être un tableau, mais pas une variable.

Seul le mot-clé const peut être utilisé pour définir des constantes de classe.

class MyClass {
    const AB = 2;
    public function showConstant(){
        echo self::AB;
    }
}
echo MyClass::AB;
$obj = new MyClass();
$obj -> showConstant();
MyClass::showConstant();
$className = 'MyClass';
echo $className::AB;

Exemple :

/**
 * 1、define(name,value,case_insensitive) 自定义全局常量, 默认大小写敏感
 * 2、const 定义类常量。
 * 3、常量名前不要使用”$”
 * 4、常量的命名一般全部使用大写字母。
 */
//定义全局常量 LANGUAGE
define('LANGUAGE','中国');
echo language;//language
echo LANGUAGE;//中国
//定义全局常量 CN
define('CN','中国',TRUE);
echo CN;//中国
echo cn;//中国
//定义类常量
class ConstTest{
const VERSION = '1.0';
function ConstTest(){
//类内部使用“self::常量名”调用,不能使用$this
echo 'self::VERSION='.self::VERSION;
}
}
//实例化 ConstTest,目的是调用构造函数
new ConstTest();
//外部调用类常量,通过“类名::常量名”直接调用,无需实例化。
echo 'VERSION='.(ConstTest::VERSION);
echo &#39;<br>&#39;;
//array get_defined_constants ([ bool $categorize = false ] ) 返回所有已定义的常量
//print_r(get_defined_constants(true));
//bool defined ( string $name ) 检查该名称的常量是否已定义。
echo defined(&#39;cn&#39;)?&#39;true&#39;:&#39;false&#39;;

Résultat d'impression :

language
中国
中国
中国
self::VERSION=1.0
VERSION=1.0
true

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