Variables de membre statiques protégées
J'ai récemment travaillé sur certains des fichiers de classe et j'ai remarqué que les variables de membre a été définie et de la protection statique de la mode comme protected static $_someVar et accessible comme statique::$_someVar.
Je comprends le concept de visibilité et que le fait d'avoir quelque chose d'protégées statique permettra d'assurer la variable de membre ne peut être consulté dans la super-classe ou les classes dérivées, mais puis-je avoir accès protégé à des variables statiques que dans les méthodes statiques?
Grâce
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Si je comprends bien, à quoi vous faites allusion est appelé fin-static bindings. Si vous avez ceci:
Si vous modifiez le
self
bits:Alors:
Parce que
self
fait référence à la classe où$_foo
a été défini (A), tandis questatic
fait référence à la classe qui l'a appelée au moment de l'exécution (B).Et bien sûr, oui, vous pouvez accéder statique des membres protégés à l'extérieur d'une méthode statique (c'est à dire: contexte de l'objet), bien que la visibilité et la portée reste encore des questions.
Variables statiques existent sur la classe, plutôt que sur les instances de la classe. Vous pouvez y accéder à partir de non-méthodes statiques, en invoquant quelque chose comme:
La raison pour laquelle cela fonctionne est que
self
est une référence à la classe en cours, plutôt que sur l'instance courante (comme$this
).Par voie de démonstration:
De sortie est
barbar
. Toutefois, si vous essayez d'y accéder directement:Puis PHP va bien se plaindre à vous pour essayer d'accéder à un membre protégé.