En utilisant $this à l'intérieur d'une fonction statique échoue
J'ai cette méthode que je veux utiliser $this dans mais tout ce que j'obtiens est: erreur Fatale: en Utilisant $this lorsqu'il n'est pas dans le contexte de l'objet.
Comment puis-je obtenir que cela fonctionne?
public static function userNameAvailibility()
{
$result = $this->getsomthin();
}
Vous devez vous connecter pour publier un commentaire.
Ce est la bonne façon
Utilisation
self::
au lieu de$this->
pour méthodes statiques.Voir: PHP Méthodes Statiques Tutoriel pour plus d'info 🙂
static::
au lieu deself::
?Vous ne pouvez pas utiliser
$this
à l'intérieur d'une fonction statique, en raison des fonctions statiques sont indépendants de tout objet instancié.Essayez de faire la fonction n'est pas statique.
Modifier:
Par définition, les méthodes statiques peuvent être appelées sans objet instancié, et il n'est donc pas une utilisation significative de
$this
à l'intérieur d'une méthode statique.Statiques uniquement les fonctions peuvent être appelées dans la fonction statique à l'aide de soi: si votre classe contient non statique de la fonction que vous souhaitez utiliser, puis vous pouvez déclarer l'instance de la même classe et de l'utiliser.
L'accesseur
this
se réfère à l'instance courante de la classe. En tant que méthodes statiques ne pas échapper à l'instance, à l'aide dethis
est interdit. Donc, il faut appeler la méthode directement ici. La méthode statique ne peut pas accéder à quoi que ce soit dans la portée de l'instance, mais l'accès à tout dans le domaine de la classe en dehors de l'instance portée.Voici un exemple de ce qui se passe lorsqu'une méthode d'une classe est appelée dans un mauvais sens. Vous allez voir des avertissements lors de l'exécution de ce code, mais il fonctionnera et permettra d'imprimer: "je suis Un: impression propriété B". (Exécuté en php5.6)
Il semble que la variable $this, utilisé dans une méthode qui est appelée comme une méthode statique, les points à l'exemple du "visiteur" de la classe. Dans l'exemple ci-dessus, il est $this->propriété utilisée dans la classe A, qui désigne une propriété de la B.
EDIT:
C'est dommage de PHP n'est pas suffisamment descriptif de l'erreur. Vous ne pouvez pas utiliser $this-> à l'intérieur d'une fonction statique, mais plutôt d'utiliser le self:: si vous appelez une fonction à l'intérieur de la même classe