Question

Ceci est une version simplifiée de ce que je veux accomplir :

Dans mon script, je veux une variable qui change vrai et faux à chaque fois que le script est exécuté.

<?php
    static $bool = true;

    // Print differente messages depending on $bool
    if( $bool == true )
        echo "It's true!";
    else
        echo "It's false!";

    // Change $bools value
    if( $bool == true )
        $bool = false
    else
        $bool = true;
?>

Mais évidemment, ce que je fais est mal.La variable $bool est constamment true et je n'ai pas complètement compris le concept de variables statiques, je présume.Qu'est-ce que je fais mal?

Était-ce utile?

La solution

PHP n'est pas capable de conserver les valeurs des variables entre les requêtes.Cela signifie qu'à chaque fois que votre script est appelé, le $bool-variable sera défini sur true.Si vous souhaitez conserver la valeur entre les requêtes, vous devez utiliser sessions ou, si vous souhaitez que la variable soit partagée entre les sessions, un mécanisme de mise en cache tel que APC ou Memcache.

Aussi, static est utilisé en PHP pour déclarer une variable partagée au niveau de la classe.Il est donc utilisé en classe, et accessible comme self::$variableName; ou Foo::$variableName

Vous pouvez en savoir plus sur propriétés statiques ici.À partir des documents :

Déclarer des propriétés ou des méthodes de classe comme statiques les rend accessibles sans avoir besoin d'une instanciation de la classe.Une propriété déclarée comme statique n'est pas accessible avec un objet de classe instancié (bien qu'une méthode statique le puisse).

Notez également que le mot static a été surchargé depuis PHP 5.3, et peut également être utilisé pour désigner Liaison statique tardive, en utilisant static::

Autres conseils

Une valeur statique ne persistera pas au fil des exécutions.Chaque fois que le script est exécuté, $bool est initialisé.Je pense que vous devriez conserver cette valeur dans un fichier pour rester simple.

Je pense que vous devez mieux comprendre l'intérêt d'une variable statique.Le stockage de la variable est alloué (et désalloué) sur la pile d'appels, donc du point de vue de l'ingénierie logicielle, sa valeur ne peut pas être modifiée au moment de l'exécution.

Il existe de meilleures solutions comme suggérées ci-dessus pour cela.

C'est une chose facile d'utiliser un mot-clé statique en php.Ici, j'ai utilisé une variable statique et une méthode statique.Essayez simplement ceci.

<?php
   class Test{
        protected static $myVar;
        public static function printHello(){         
            self::$myVar = 'Hello'; //This will assign the value to the static variable $myVar
            echo self::$myVar;  //This prints the value of static variable $myVar
        }
    }
    Test::printHello();
?>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top