Je vois la variable $this
en PHP tout le temps et je n'ai aucune idée à quoi elle sert. Je ne l'ai jamais utilisé personnellement.
Quelqu'un peut-il me dire comment la variable $this
fonctionne en PHP?
C'est une référence à l'objet courant, il est le plus couramment utilisé dans le code orienté objet.
Exemple:
<?php
class Person {
public $name;
function __construct( $name ) {
$this->name = $name;
}
};
$jack = new Person('Jack');
echo $jack->name;
Cela stocke la chaîne «Jack» en tant que propriété de l'objet créé.
La meilleure façon d'en savoir plus sur la
$this
variable en PHP est de l'essayer contre l'interpréteur dans divers contextes:Ainsi, la
$this
pseudo-variable a la méthode et les propriétés de l'objet courant. Une telle chose est utile car elle vous permet d'accéder à toutes les variables membres et méthodes membres de la classe. Par exemple:$this
est une référence à un PHPObject
qui a été créé par l'interpréteur pour vous, qui contient un tableau de variables.Si vous appelez à l'
$this
intérieur d'une méthode normale dans une classe normale,$this
renvoie l'Object (la classe) à laquelle appartient cette méthode.Il est possible de ne
$this
pas être défini si le contexte n'a pas d'objet parent.php.net a une grande page sur la programmation orientée objet PHP et comment
$this
se comporte en fonction du contexte. https://www.php.net/manual/en/language.oop5.basic.phpla source
Je connais sa vieille question, en tout cas une autre explication exacte à ce sujet . $ this est principalement utilisé pour référencer les propriétés d'une classe.
Exemple:
production:
la source
C'est le moyen de référencer une instance d'une classe à partir de lui-même, comme beaucoup d'autres langages orientés objet.
À partir de la documentation PHP :
la source
Voyons ce qui se passe si nous n'utilisons pas $ this et essayons d'avoir des variables d'instance et des arguments de constructeur avec le même nom avec l'extrait de code suivant
Il ne fait écho que
cela fait écho à 'Tom'
la source
$this
dans le deuxième constructeur.$name
trouve Tom, mais à l'extérieur de la fonction, il n'a aucune valeur, car sa portée est limitée à celle de la fonction.lorsque vous créez une classe, vous avez (dans de nombreux cas) des variables d'instance et des méthodes (aka. fonctions). $ this accède à ces variables d'instance afin que vos fonctions puissent prendre ces variables et faire ce dont elles ont besoin pour faire ce que vous voulez avec elles.
une autre version de l'exemple de meder:
la source
$this
est une référence à l'objet appelant (généralement l'objet auquel appartient la méthode, mais éventuellement un autre objet, si la méthode est appelée statiquement depuis le contexte d'un objet secondaire).la source
$ ceci est une variable spéciale et fait référence au même objet ie. lui-même.
il fait en fait référence à l'instance de la classe actuelle
voici un exemple qui effacera la déclaration ci-dessus
la source
C'est une longue explication détaillée. J'espère que cela aidera les débutants. Je vais le rendre très simple.
Tout d'abord, créons une classe
Vous pouvez omettre la balise de fermeture php
?>
si vous utilisez uniquement du code php.Ajoutons maintenant des propriétés et une méthode à l'intérieur
Class1
.La propriété n'est qu'une simple variable, mais nous lui donnons le nom de propriété parce qu'elle est à l'intérieur d'une classe.
La méthode est juste une fonction simple, mais nous disons que la méthode est également à l'intérieur d'une classe.
Le
public
mot-clé signifie que la méthode ou une propriété est accessible n'importe où dans le script.Maintenant, comment pouvons-nous utiliser les propriétés et la méthode à l'intérieur
Class1
?La réponse est de créer une instance ou un objet, pensez à un objet comme une copie de la classe.
Nous avons créé un objet, qui est
$object1
, qui est une copie deClass1
avec tout son contenu. Et nous avons vidé tout le contenu de l'$object1
utilisationvar_dump()
.Cela vous donnera
Donc, tout le contenu de
Class1
est dans$object1
, saufMethod1
, je ne sais pas pourquoi les méthodes ne s'affichent pas lors du vidage d'objets.Maintenant, que faire si nous voulons accéder
$property1
uniquement. C'est simple, nous le faisonsvar_dump($object1->property1);
, nous venons d'ajouter->property1
, nous l'avons souligné.nous pouvons également accéder
Method1()
, nous le faisonsvar_dump($object1->Method1());
.Supposons maintenant que je veuille accéder
$property1
de l'intérieurMethod1()
, je vais le fairenous avons créé
$object2 = new Class1;
qui est une nouvelle copie deClass1
ou nous pouvons dire une instance. Ensuite, nous avons soulignéproperty1
de$object2
Cela s'imprimera
string(15) "I am property 1"
dans le navigateur.Maintenant au lieu de faire ça à l'intérieur
Method1()
On fait ça
L'
$this
objet est utilisé à l'intérieur de la classe pour faire référence à la classe elle-même.C'est une alternative pour créer un nouvel objet puis le renvoyer comme ceci
Un autre exemple
Nous avons créé 2 propriétés contenant des entiers, puis nous les avons ajoutées et avons mis le résultat dans
$this->result
.N'oublie pas ça
$this->property1
=$property1
=119
ils ont la même valeur .. etc.
J'espère que cela explique l'idée.
Cette série de vidéos vous aidera beaucoup en POO
https://www.youtube.com/playlist?list=PLe30vg_FG4OSEHH6bRF8FrA7wmoAMUZLv
la source
Il fait référence à l'instance de la classe actuelle, comme l' a dit meder .
Consultez la documentation PHP . C'est expliqué dans le premier exemple.
la source