Les membres statiques d'une classe sont différents des membres de classe généraux : les membres statiques n'ont rien à voir avec l'instance de l'objet, seulement la classe elle-même. Ils sont utilisés pour implémenter les fonctions et les données que la classe souhaite encapsuler, mais n'incluent pas les fonctions et les données d'objets spécifiques. Les membres statiques incluent des méthodes statiques et des propriétés statiques.
Les propriétés statiques contiennent des données à encapsuler dans une classe et peuvent être partagées par toutes les instances de la classe. En fait, en plus d’appartenir à une classe fixe et de restreindre les méthodes d’accès, les propriétés statiques d’une classe sont très similaires aux variables globales d’une fonction.
Nous utilisons une propriété statique Counter::$count dans l'exemple suivant. Il appartient à la classe Counter et non à aucune instance de Counter. Vous ne pouvez pas l'utiliser pour y faire référence, mais vous pouvez utiliser self ou d'autres expressions de dénomination valides. Dans l'exemple, la méthode getCount renvoie self::$count, et non Counter::$count.
Les méthodes statiques implémentent des fonctions qui doivent être encapsulées par la classe et n'ont rien à voir avec des objets spécifiques. Les méthodes statiques sont très similaires aux fonctions globales. la classe, et est également accessible par l'instance de l'objet auquel accéder, que le qualificatif d'accès soit ou non.
Dans l'exemple précédent, getCount est une méthode ordinaire, appelée avec ->. variable, bien que la méthode ne soit pas utilisée. Cependant, getCount n'appartient à aucun objet. Dans certains cas, nous voulons même l'appeler lorsqu'il n'y a pas d'objet valide, alors une méthode statique ne doit pas être utilisée pour établir cette variable. à l'intérieur d'une méthode statique, même si vous l'appelez à partir d'un objet. Appelez-les
L'exemple 6.7 vient de 6.3 en changeant getCount en méthode statique. Le Mot-clé statique ne peut pas empêcher une instance d'appeler getCount. en utilisant l'opérateur ->. Mais PHP ne créera pas cette variable dans la méthode. Si vous utilisez this-> pour appeler, une erreur se produira
//6.3. à la Section 4--Constructeur et L'exemple dans le destructeur (voir l'article précédent), en comparant les deux exemples, vous pourrez mieux saisir la différence entre
//méthode statique et méthode ordinaire.
Vous pouvez écrire une méthode pour montrer si elle est appelée de manière statique ou non statique en déterminant si elle est créée. Bien sûr, si vous utilisez le mot-clé static, cette méthode sera toujours statique. peu importe comment on l'appelle.
Votre classe peut également définir des attributs constants. Vous n'avez pas besoin d'utiliser public static, utilisez simplement le const mot-clé. sont des attributs de la classe, pas des instanciations de la classe
Listing 6.7 Membres statiques
<?php class Counter { private static $count = 0; const VERSION = 2.0; function construct() { self::$count++; } function destruct() { self::$count--; } static function getCount() { return self::$count; } }; //创建一个实例,则construct()将执行 $c = new Counter(); //输出 1 print(Counter::getCount() . "n"); //输出类的版本属性 print("Version used: " . Counter::VERSION . "n"); ?>
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!