Maison  >  Article  >  développement back-end  >  Comprendre le mot-clé statique en php

Comprendre le mot-clé statique en php

angryTom
angryTomavant
2019-11-26 17:35:003276parcourir

Comprendre le mot-clé statique en php

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();

● Dans la classe actuelle ( Pour accéder à statique. méthodes ou attributs dans des non-sous-classes) utilisez self::method(), remarque : self peut appeler des méthodes et attributs statiques de la classe parent ; ● Les méthodes statiques ne peuvent pas accéder aux attributs et méthodes ordinaires de cette classe, car ces attributs et méthodes appartiennent à un objet, les méthodes statiques et les propriétés sont également appelées méthodes de variables de classe.

Liaison statique retardée

Regardez d'abord un exemple

header("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
非延迟静态绑定
延迟静态绑定

Après php5.3, nous pouvons utiliser static pour obtenir le aa() du Méthode de sous-classe, qui fait référence à la classe appelée. L'utilisation du mot-clé self fait référence à la classe actuelle (A), donc ce qui est obtenu est la valeur de retour de la méthode aa() de la classe A

Résumé :

Liaison paresseuse du statique ; mot-clé Il a de nombreuses utilisations et peut généralement être résumé lorsque vous travaillez sur un projet.

Pour plus de connaissances sur PHP, veuillez visiter le

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer