Variables statiques en PHP
J'ai trouvé différentes informations concernant les variables en PHP, mais rien qui explique d'ailleurs ce qu'il est et comment il fonctionne vraiment.
J'ai lu que lorsqu'il est utilisé à l'intérieur d'une classe à une propriété statique ne peut pas être utilisé par n'importe quel objet instancié par la classe et qu'une méthode statique peut être utilisé par un objet instancié de la classe?
Cependant, j'ai essayé de faire des recherches sur une variable statique ne dans une fonction qui n'est pas dans une classe. Aussi, une variable static dans une fonction de travail un peu comme la fermeture en javascript ou suis-je complètement à côté de cette hypothèse?
source d'informationauteur mike
Vous devez vous connecter pour publier un commentaire.
Cela dépend de ce que vous voulez dire par là. par exemple:
Oui, un objet instancié appartenant à la classe peut accéder à une méthode statique.
Le mot-clé
static
dans le contexte de classes se comportent un peu comme statique de la classe des variables dans d'autres langues. Un membre (méthode ou variable) a déclaréstatic
est associé à la classe et, plutôt que d'une instance de cette classe. Ainsi, vous pouvez y accéder sans une instance de la classe (par exemple: dans l'exemple ci-dessus, je pourrais utiliserFoo::$my_var
)En dehors des classes (c'est à dire: dans les fonctions), un
static
variable est une variable qui ne perd pas de sa valeur lorsque la fonction se termine. Donc, en un sens, oui, ils fonctionnent comme des closures en JavaScript.Mais contrairement à la JS fermetures, il n'y a qu'une seule valeur pour la variable, qui est maintenu à travers les différents appels de la même fonction. À partir du manuel PHP exemple:
Référence:
static
mot-clé (dans les classes)(les fonctions)static
a deux usages en PHP:Premier, et le plus souvent, il peut être utilisé pour définir la "classe" des variables/fonctions (par opposition aux variables d'instance/fonctions), qui peut être consulté sans l'instanciation d'une classe:
Deuxièmement, il peut être utilisé pour maintenir l'état entre les appels de fonction:
Noter que la déclaration d'une variable static dans une fonction fonctionne de la même façon, indépendamment de si oui ou non la fonction est définie dans une classe, tout ce qui importe est où le variable est déclarée (membre de la classe ou dans une fonction).
Une variable static dans une fonction est initialisé que dans le premier appel de la fonction dans son script en cours.
Au premier abord, je vais vous expliquer ce qui va se passer si statique de la variable n'est pas utilisée
Si vous exécutez le code ci-dessus à la sortie que vous obtient 1 1 1 . Depuis à chaque fois que vous avez appelé la fonction y de la variable attribue à 1, puis l'imprime.
Voyons maintenant ce que si variable statique est utilisé
Maintenant, si vous exécutez cet extrait de code, la sortie sera 1 2 3.
Remarque: Statique garde sa valeur et le bâton autour de chaque fois que la fonction est appelée. Il ne perdra pas sa valeur lorsque la fonction est appelée.
Première: pour la add_student fonction, la meilleure pratique consiste à utiliser statique n'est pas public.
Deuxièmement: dans le add_student fonction, nous utilisons des Étudiants::$total_student,ne pas utiliser $this->total_student. C'est la grosse différente de la variable normale.
Troisième:variable statique sont partagés tout au long de l'arbre d'héritage.
prendre le code ci-dessous pour voir quel est le résultat: