Maison  >  Article  >  développement back-end  >  Explication détaillée des exemples d'utilisation de mot-clé statique dans les fonctions en PHP

Explication détaillée des exemples d'utilisation de mot-clé statique dans les fonctions en PHP

伊谢尔伦
伊谢尔伦original
2017-06-26 11:13:181254parcourir

static est une variable statique en php. Il peut définir des fonctions. La variable est une variable statique globale. Alors, quel impact aura l'ajout de static devant la fonction ou la variable. ? Eh bien, jetons un coup d’œil ensemble.  

1) La description des variables globales (variables externes) est précédée de static pour constituer une variable globale statique. Les variables globales elles-mêmes sont des méthodes de stockage statiques, et les variables globales statiques sont bien entendu également des méthodes de stockage statiques. Il n’y a aucune différence entre les deux dans la manière dont ils sont stockés. La différence entre les deux est que la portée des variables globales non statiques est l'ensemble du programme source. Lorsqu'un programme source se compose de plusieurs fichiers source, les variables globales non statiques sont valides dans chaque fichier source. Les variables globales statiques limitent leur portée, c'est-à-dire qu'elles ne sont valides que dans le fichier source dans lequel la variable est définie et ne peuvent pas être utilisées dans d'autres fichiers source du même programme source. Étant donné que la portée des variables globales statiques est limitée à un fichier source et ne peut être partagée que par les fonctions de ce fichier source, les erreurs peuvent être évitées dans d'autres fichiers source.

2) De l'analyse ci-dessus, on peut voir que le changement d'une variable locale en variable statique change sa méthode de stockage et change sa durée de vie. Changer une variable globale en variable statique modifie sa portée et limite son champ d'utilisation. ​

3) La fonction statique est différente de la portée de la fonction ordinaire , uniquement dans ce fichier. Les fonctions utilisées uniquement dans le fichier source actuel doivent être déclarées comme fonctions internes (statiques), et les fonctions internes doivent être décrites et définies dans le fichier source actuel. Pour les fonctions pouvant être utilisées en dehors du fichier source actuel, elles doivent être indiquées dans un fichier d'en-tête. Le fichier source pour utiliser ces fonctions doit inclure ce fichier d'en-tête

Après PHP5.3.0, nous pouvons utiliser une variable pour appelez-le dynamiquement gentil. Mais la valeur de cette variable ne peut pas être les mots-clés self, parent ou static.

Exemple n°1 Exemple de code de membre statique

<?php
class Foo
{
    public static $my_static = &#39;foo&#39;;
    public function staticValue() {
       return self::$my_static;
    }
}
class Bar extends Foo
{
    public function fooStatic() {
        return parent::$my_static;
    }
}

print Foo::$my_static . " ";
$foo = new Foo();
print $foo->staticValue() . " ";
print $foo->my_static . " ";      // Undefined "Property" my_static
print $foo::$my_static . " ";
$classname = &#39;Foo&#39;;
print $classname::$my_static . " "; // PHP 5.3.0之后可以动态调用
print Bar::$my_static . " ";
$bar = new Bar();
print $bar->fooStatic() . " ";
?>

Exemple n°2 Exemple de code de méthode statique

<?php
class Foo {
    public static function aStaticMethod() {
        // ...
    }
}
Foo::aStaticMethod();
$classname = &#39;Foo&#39;;
$classname::aStaticMethod(); // As of PHP 5.3.0
?>

À propos du Mot-clé statique dans le class Pour une utilisation dans, le manuel PHP donne les conventions suivantes :

1 Déclarez les membres ou les méthodes de la classe comme statiques, et vous pouvez y accéder directement sans instancier la classe. Les membres statiques (à l'exception des méthodes statiques) ne sont pas accessibles via un objet.

2. Étant donné que les méthodes statiques n'ont pas besoin d'être appelées via des objets, la pseudo variable $this n'est pas disponible dans les méthodes statiques.
3. Les propriétés statiques ne sont pas accessibles aux objets via l'opérateur ->
4. L'appel d'une méthode non statique à l'aide de la méthode :: provoquera une erreur de niveau E_STRICT.
Concentrons-nous maintenant sur l’article 4.
Environnement d'exploitation : (Win32) PHP/5.3.3

class Foo{       
    public static $my_static = &#39;foo&#39;;//声明一个静态成员  
    public function staticValue() {//静态方法  
       return self::$my_static;//  
    }  
    public function run(){//非静态方法  
      return "abc <br>";  
    }  
    public  function callrun() {  
        return self::run();//用self::方式调用一个非静态方法  
             
    }  
      
}  
     
echo Foo::$my_static . "<br >";  
     
echo Foo::run();//用className::方法名调用非静态方法  
echo Foo::callrun();

Le rôle du mot-clé static :

Le champ d'utilisation des variables statiques en PHP est plus large. non seulement ajoutez le modificateur static devant une classe, une méthode ou une variable, nous pouvons même ajouter le mot-clé static aux variables à l'intérieur de la fonction. La valeur d'une variable avec le modificateur statique ajouté ne sera pas perdue même après l'exécution de la fonction, c'est-à-dire que la variable se souvient toujours de sa valeur d'origine la prochaine fois que cette fonction est appelée.




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