Maison  >  Article  >  développement back-end  >  La différence et l'utilisation de const et static en php

La différence et l'utilisation de const et static en php

不言
不言original
2018-05-15 17:40:081792parcourir

Cet article vous présente la différence et l'utilisation de const et static en PHP. Les amis dans le besoin peuvent s'y référer

Tout d'abord, à propos de const, les membres ne peuvent être modifiés qu'à l'intérieur des classes PHP. . Les attributs ne peuvent pas modifier les méthodes, comme suit :

[php] view plain copy

class Test{  
    const PATH = 'c/';//修饰常量  
    const function test(){//这种方法是错误的,const无法修饰方法  
    }  
}

const in. Il n'est pas nécessaire d'ajouter des champs de modification d'autorisation lors de son utilisation, mais cela nécessite des compétences pour appeler des constantes modifiées const, car les constantes appartiennent à la classe entière, pas à un objet spécifique, vous devez donc utiliser le nom de classe et la modification du nom de domaine. lors de l'appel Symbole, par exemple :

[php] view plain copy

echo Test::PATH;  
//也可以使用下面的方法调用  
$test = new Test();  
echo  $test::PATH;

mais lorsqu'il est appelé. à l'intérieur de la classe Un problème se posera, comment obtenir le nom de la classe actuelle ou le nom de l'objet actuel à l'intérieur de la classe (php peut obtenir le nom de la classe en fonction de l'objet - PHP nous fournit deux mots-clés spéciaux, tels que :

[php] view plain copy

class Test{  
    const PATH = 'c/';//修饰常量  
    public function ass(){  
        echo $this::PATH.&#39;<br />&#39;;  
        echo self::PATH.&#39;<br />&#39;;  
    }  
}

où self (sans $) représente le nom de la classe actuelle et $ cela représente l'objet actuel. De cette façon, nous pouvons appeler des constantes modifiées const à l’intérieur de la classe.

Parlons ensuite de statique

Bien que const soit très utile, la valeur ne peut pas être modifiée une fois définie, mais parfois nous avons besoin un attribut qui appartient à la classe, mais sa valeur peut être modifiée. Par exemple, pour compter le nombre d'objets de cette classe qui ont été construits, il est temps d'utiliser static. Lorsque static modifie les variables membres de la classe, sa méthode d'utilisation. est fondamentalement la même chose que const. Idem, la différence est que des autorisations peuvent être ajoutées aux propriétés modifiées par static (const peut également être ajoutée dans PHP 7.1, mais pas dans le passé) et les valeurs des variables membres modifiées par static. peut être modifié.

Mais lorsque la méthode membre est modifiée statiquement, la méthode d'utilisation change un peu. À l'intérieur de la classe, à l'intérieur du corps de la méthode modifié statiquement, aucune variable membre ordinaire de la classe actuelle n'est accessible. , pour être précis, de manière générale, le mot-clé $this ne peut pas être utilisé, et seules les variables membres statiques et les constantes de classe de la classe actuelle peuvent être utilisées.

[php] view plain copy

class Test{  
    static public $name=&#39;asd&#39;;  
    const π = 3.1415926;  
    public $age = 10;  
    public static function lenth($r){  
        //echo $this->age;//会发生错误,不能访问普通的成员变量  
        echo Test::$name;  
        return $r*2*self::π;  
          
    }  
    public static function area($r){  
        return $r*$r*self::π;  
    }     
}

Dans le processus d'utilisation de static, la méthode appelée est la même chose que Les variables modifiées en appelant static sont différentes. Elles peuvent être appelées via des noms de classe ou des noms d'objet, tels que :

[php] view plain copy.

echo &#39;周长:&#39;. Test::lenth(1).&#39;<br/>&#39;;  
echo &#39;面积:&#39;.Test::area(1).&#39;<br/>&#39;;  
$per = new Test();  
echo $per->lenth(3);

Les deux méthodes d'appel ci-dessus sont légales.

Recommandations associées :

Comment utiliser la fonction iconv en php

Analyse de nouvelle ligne PHP_EOL en php

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