Comment accéder à un membre privé à l'intérieur d'une fonction statique en PHP
J'ai la classe suivante en PHP
class MyClass
{
//How to declare MyMember here? It needs to be private
public static function MyFunction()
{
//How to access MyMember here?
}
}
Je suis totalement confus au sujet de la syntaxe à utiliser
$MyMember = 0;
et echo $MyMember
ou
private $MyMember = 0;
et echo $MyMember
ou
$this->MyMember = 0;
et echo $this->MyMember
Quelqu'un peut me dire comment faire?
Je suis pas forte en OUPS.
Pouvez-vous faire en premier lieu?
Si non, comment dois-je déclarer le membre afin que je puisse accéder à l'intérieur des fonctions statiques?
Vous devez vous connecter pour publier un commentaire.
voir Visibilité et Opérateur De Résolution De Portée (::) dans le oop5 chapitre du manuel php.
C'est une super réponse tardive, mais il peut aider quelqu'un..
Qui fonctionne. Vous pouvez accéder au membre privé de cette façon, mais si vous aviez $classe que vous devez juste faire MyFunction une méthode de la classe, que vous appelez de classe $->Mafonction(). Cependant, vous pourriez avoir un tableau statique que chaque instance est ajoutée dans le constructeur de la classe qui cette fonction statique pourrait accéder et parcourir, la mise à jour de toutes les instances. ie..
Dans les méthodes statiques, vous ne pouvez pas appeler variable à l'aide de
$this
parce que les méthodes statiques sont appelées à l'extérieur d'une "instance de contexte".Il est clairement indiqué dans le Doc PHP.
$m->MyFunction();
comme ça si la fonction est statique?echo $MyMember
, il n'est pas de travail pour moi. Il ne fonctionne pas? Je suis incapable de comprendre votre commentaire//local
là.Statique ou non statique?
Avez-vous déjà posé cette question?
Propriétés
N'particulier la valeur de la propriété est d'attribuer à la classe de schéma directeur ou plutôt à elle d'instance (objet créé à partir d'une classe)?
Si la valeur n'est pas étanche à l'instance de classe (la classe de l'objet) ensuite, vous pouvez la déclarer en tant que propriété statique de la.
Méthodes
Au moment de décider sur la réalisation d'une méthode statique ou non statique, vous devez vous poser une question simple. Cette méthode doivent utiliser
$this
? Si c'est le cas, il ne doit pas être déclaré comme statique.Êtes-vous à l'appel de cette méthode sur un objet ou sur la classe en général? Si vous ne savez pas lequel utiliser, car les deux sont appropriées pour les cas d'utilisation particulier, puis utilisez toujours des non-statique. Il vous donnera plus de souplesse à l'avenir.
Bonne pratique est de toujours commencer la conception de votre classe non statique et de la force statique si particulière des états-unis sont très claires.
Vous pouvez essayer de le déclarer vos paramètres statique... juste pour que vous pouvez y accéder à partir de la méthode statique mais qui, généralement, n'est pas ce que vous voulez faire.
Donc, si vous avez vraiment besoin d'accéder à
$this
de méthode statique alors cela signifie que vous avez besoin de repenser/refonte de votre architecture de classe parce que vous avez n'avez tort.