Maison  >  Article  >  développement back-end  >  Explication détaillée de la définition constante de la classe PHP et exemples

Explication détaillée de la définition constante de la classe PHP et exemples

怪我咯
怪我咯original
2017-05-04 10:39:361829parcourir

Que sont les constantes de classe ?

En PHP, on peut comprendre qu'une quantité dont la valeur ne change pas s'appelle une constante. Alors, qu'est-ce qu'une constante de classe ? En fait, les constantes de classe sont également faciles à comprendre. Nous pouvons appeler la valeur qui reste toujours inchangée dans la classe une constante, et cette constante peut être appelée une constante de classe. N'oubliez pas que vous n'avez pas besoin d'utiliser le symbole « $ » lors de la définition et de l'utilisation de constantes.

Les constantes de classe appartiennent à la classe elle-même, pas aux instances d'objet, et ne sont pas accessibles via les instances d'objet

* Ne peuvent pas être modifiées avec public, protected, private, static

* Les sous-classes peuvent être remplacées. Pour écrire des constantes dans la classe parent, vous pouvez appeler les constantes de la classe parent via (parent::)

* Depuis PHP5.3.0, vous pouvez utiliser une variable pour appeler dynamiquement la classe . Mais la valeur de cette variable ne peut pas être un mot-clé (comme self, parent ou static).

Définition des constantes de classe

Les constantes de classe sont définies à l'aide du mot-clé const :

const 常量名 = 常量值

Exemple

Définir et utiliser une constante de classe

<?php
header("content-type:text/html;charset=utf-8");
/**
 * PHP类常量
 *
 * 类常量属于类自身,不属于对象实例,不能通过对象实例访问
 * 不能用public,protected,private,static修饰
 * 子类可以重写父类中的常量,可以通过(parent::)来调用父类中的常量
 * 自PHP5.3.0起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如self,parent或static)。
 */
class Foo
{
    // 常量值只能是标量,string,bool,integer,float,null,可以用nowdoc结构来初始化常量
    const BAR = &#39;PHP中文网&#39;;
    public static function getConstantValue()
    {
        // 在类的内部可以用self或类名来访问自身的常量,外部需要用类名
        return self::BAR;
    }
    public function getConstant()
    {
        return self::BAR;
    }
}
$foo = &#39;Foo&#39;;
echo $foo::BAR, &#39;<br />&#39;;
echo Foo::BAR, &#39;<br />&#39;;
$obj = new Foo();
echo $obj->getConstant(), &#39;<br />&#39;;
echo $obj->getConstantValue(), &#39;<br />&#39;;
echo Foo::getConstantValue();
?>

Résultat de l'exécution du code :

Explication détaillée de la définition constante de la classe PHP et exemples

Résultat Dans l'exemple ci-dessus, nous réécrivons la classe parent avec un sous-classe Constantes, le code est le suivant :

<?php
header("content-type:text/html;charset=utf-8");
/**
 * PHP类常量
 *
 * 类常量属于类自身,不属于对象实例,不能通过对象实例访问
 * 不能用public,protected,private,static修饰
 * 子类可以重写父类中的常量,可以通过(parent::)来调用父类中的常量
 * 自PHP5.3.0起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如self,parent或static)。
 */
class Foo
{
    // 常量值只能是标量,string,bool,integer,float,null,可以用nowdoc结构来初始化常量
    const BAR = &#39;PHP中文网&#39;;
    public static function getConstantValue()
    {
        // 在类的内部可以用self或类名来访问自身的常量,外部需要用类名
        return self::BAR;
    }
    public function getConstant()
    {
        return self::BAR;
    }
}
$foo = &#39;Foo&#39;;
echo $foo::BAR, &#39;<br />&#39;;
echo Foo::BAR, &#39;<br />&#39;;
$obj = new Foo();
echo $obj->getConstant(), &#39;<br />&#39;;
echo $obj->getConstantValue(), &#39;<br />&#39;;
echo Foo::getConstantValue();
// 以上均输出PHP中文网
echo "<hr/>";
class Bar extends Foo
{
    const BAR = &#39;foo&#39;; // 重写父类常量
    public static function getMyConstant()
    {
        return self::BAR;
    }
    public static function getParentConstant()
    {
        return parent::BAR;
    }
}
echo Bar::getMyConstant(),&#39;<br/>&#39;; // foo
echo Bar::getParentConstant(); // PHP中文网
?>

Résultats de l'exécution du code :

Explication détaillée de la définition constante de la classe PHP et exemples

Articles connexes recommandés :

Définition des constantes PHP Explications détaillées et exemples d'utilisation

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