Compréhension du mot clé static en php
Compréhension des variables statiques static
Le spécificateur de type de variable statique est statique.
Les variables statiques appartiennent au stockage statique, et leur espace de stockage est la zone de données statiques dans la mémoire (les unités de stockage sont allouées dans la zone de stockage statique. Les données de cette zone occupent ces espaces de stockage tout au long du fonctionnement de). le programme. (Il n'est pas libéré pendant toute la durée du programme), et on peut également considérer que son adresse mémoire reste inchangée jusqu'à la fin de tout le programme (au contraire, les variables auto automatiques, c'est-à-dire locales dynamiques variables, appartiennent à la catégorie de stockage dynamique et occupent l'espace de stockage dynamique (fonctions libérées une fois l'appel terminé). Bien que les variables statiques existent toujours tout au long de l'exécution du programme, elles ne peuvent pas être utilisées en dehors de son cadre.
De plus, les quantités appartenant aux méthodes de stockage statiques ne sont pas nécessairement des variables statiques. Par exemple : Bien que les variables externes appartiennent à la méthode de stockage statique, elles ne sont pas nécessairement des variables statiques. Elles doivent être définies par static avant de pouvoir devenir des variables externes statiques ou des variables globales statiques.
Toutes les variables globales sont des variables statiques, et les variables locales ne sont des variables statiques locales que lorsqu'elles sont définies avec le modificateur de type static.
Les variables statiques peuvent être appliquées n'importe où. Une fois l'application réussie, elle n'acceptera plus d'autres applications similaires.
Les variables statiques ne signifient pas qu'elles ne peuvent pas changer leur valeur. Une quantité qui ne peut pas changer sa valeur est appelée une constante. La valeur qu'il détient est modifiable et elle restera à jour. On dit qu'il est statique car il ne change pas lorsque la fonction est appelée ou se termine. Autrement dit, si nous attribuons une certaine valeur à une variable statique la dernière fois que la fonction est appelée, la valeur restera inchangée au prochain appel de la fonction.
Variables statiques dans la fonction
utilisation statique
1, veuillez consulter l'exemple suivant :
function doStuff(&$cache) { static $cache = null; if ($cache === null) { echo $cache = '%heavy database stuff or something%'; } } $cache = 'not null'; doStuff($cache); // Output %heavy database stuff or something%
De plus, dans doStuff ( ), la variable statique $cache n'est pas immuable, $cache est passé de null à %des éléments de base de données lourds ou quelque chose comme ça% ; Comme le montre l'exemple ci-dessus, le mot-clé static affecte le transfert de référence, même si nous utilisons & Pour essayer pour changer la valeur et l'adresse de la variable $cache, cela n'affecte toujours pas le jugement if dans la fonction doStuff()
Méthodes et attributs statiques dans la classe
< ; 🎜> ● Nous traitons la classe comme un modèle pour générer des objets, utilisons l'objet comme composant actif, instancions une classe, obtenons un objet, puis accédons aux méthodes et propriétés de l'objet. Par exemple $foo = new Foo(); $foo est l'objet après instanciation de la classe Foo. ● Les méthodes statiques sont des fonctions avec une classe comme portée On peut accéder directement aux méthodes statiques sans instanciation Par exemple :class Foo() { public static function a(){} } // 访问a(); Foo::a();
Liaison statique retardée
Regardez d'abord un exempleheader("Content-type: text/html; charset=utf-8"); class A { public static function aa() { echo "非延迟静态绑定<br>"; } public static function bb() { echo self::aa(); // Output 非延迟静态绑定 echo static::aa(); // Output 延迟静态绑定 } } class B extends A { public static function aa() { echo "延迟静态绑定"; } public static function cc() { echo self::bb(); } } B::bb(); // Output 非延迟静态绑定 延迟静态绑定
Site Web PHP chinois !
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!