Ich sehe die Variable die $this
ganze Zeit in PHP und ich habe keine Ahnung, wofür sie verwendet wird. Ich habe es nie persönlich benutzt.
Kann mir jemand sagen, wie die Variable $this
in PHP funktioniert?
Es ist eine Referenz auf das aktuelle Objekt und wird am häufigsten in objektorientiertem Code verwendet.
Beispiel:
<?php
class Person {
public $name;
function __construct( $name ) {
$this->name = $name;
}
};
$jack = new Person('Jack');
echo $jack->name;
Dadurch wird die Zeichenfolge 'Jack' als Eigenschaft des erstellten Objekts gespeichert.
Der beste Weg, um mehr über die
$this
Variable in PHP zu erfahren, besteht darin, sie in verschiedenen Kontexten gegen den Interpreter zu testen:Die
$this
Pseudovariable hat also die Methoden und Eigenschaften des aktuellen Objekts. So etwas ist nützlich, weil Sie damit auf alle Mitgliedsvariablen und Mitgliedsmethoden innerhalb der Klasse zugreifen können. Beispielsweise:$this
ist ein Verweis auf ein PHPObject
, das vom Interpreter für Sie erstellt wurde und ein Array von Variablen enthält.Wenn Sie
$this
innerhalb einer normalen Methode in einer normalen Klasse aufrufen , wird$this
das Objekt (die Klasse) zurückgegeben, zu dem diese Methode gehört.Es ist möglich
$this
, undefiniert zu sein, wenn der Kontext kein übergeordnetes Objekt hat.php.net hat eine große Seite, die über objektorientierte PHP-Programmierung und das Verhalten
$this
je nach Kontext spricht . https://www.php.net/manual/en/language.oop5.basic.phpquelle
Ich kenne seine alte Frage, jedenfalls eine weitere genaue Erklärung dazu . $ Dies wird hauptsächlich verwendet, um Eigenschaften einer Klasse zu referenzieren.
Beispiel:
Ausgabe:
quelle
Dies ist die Möglichkeit, eine Instanz einer Klasse aus sich heraus zu referenzieren, genau wie viele andere objektorientierte Sprachen.
Aus den PHP-Dokumenten :
quelle
Mal sehen, was passiert, wenn wir $ this nicht verwenden und versuchen, Instanzvariablen und Konstruktorargumente mit demselben Namen mit dem folgenden Codeausschnitt zu haben
Es hallt nichts als
dies spiegelt "Tom" wider
quelle
$this
dem zweiten Konstruktor behoben .$name
befindet sich Tom, außerhalb der Funktion hat sie jedoch keinen Wert, da ihr Umfang auf den der Funktion beschränkt ist.Wenn Sie eine Klasse erstellen, haben Sie (in vielen Fällen) Instanzvariablen und -methoden (auch bekannt als. Funktionen). $ this greift auf diese Instanzvariablen zu, damit Ihre Funktionen diese Variablen übernehmen und das tun können, was sie benötigen, um mit ihnen zu tun, was Sie wollen.
eine andere Version von Meders Beispiel:
quelle
$this
ist eine Referenz auf das aufrufende Objekt (normalerweise das Objekt, zu dem die Methode gehört, aber möglicherweise ein anderes Objekt, wenn die Methode statisch aus dem Kontext eines sekundären Objekts aufgerufen wird).quelle
$ Dies ist eine spezielle Variable und bezieht sich auf dasselbe Objekt, dh. selbst.
es verweist tatsächlich auf eine Instanz der aktuellen Klasse
Hier ist ein Beispiel, das die obige Aussage verdeutlicht
quelle
Dies ist eine lange ausführliche Erklärung. Ich hoffe das hilft den Anfängern. Ich werde es sehr einfach machen.
Zuerst erstellen wir eine Klasse
Sie können das PHP-Closing-Tag weglassen,
?>
wenn Sie nur PHP-Code verwenden.Fügen wir nun Eigenschaften und eine Methode hinzu
Class1
.Die Eigenschaft ist nur eine einfache Variable, aber wir geben ihr die Namenseigenschaft, da sie innerhalb einer Klasse liegt.
Die Methode ist nur eine einfache Funktion, aber wir sagen, dass die Methode auch innerhalb einer Klasse liegt.
Das
public
Schlüsselwort bedeutet, dass auf die Methode oder eine Eigenschaft an einer beliebigen Stelle im Skript zugegriffen werden kann.Wie können wir nun die Eigenschaften und die Methode im Inneren verwenden
Class1
?Die Antwort ist das Erstellen einer Instanz oder eines Objekts. Stellen Sie sich ein Objekt als Kopie der Klasse vor.
Wir haben ein Objekt erstellt, das
$object1
eine KopieClass1
mit allen Inhalten ist. Und wir haben den gesamten Inhalt der$object1
Verwendung abgeladenvar_dump()
.Das wird dir geben
Der gesamte Inhalt von
Class1
ist in$object1
, außerMethod1
ich weiß nicht, warum Methoden beim Dumping von Objekten nicht angezeigt werden.Was ist nun, wenn wir
$property1
nur darauf zugreifen möchten? Es ist einfach, wir tun esvar_dump($object1->property1);
, wir haben gerade hinzugefügt->property1
, wir haben darauf hingewiesen.wir können auch den Zugang
Method1()
, was wir tunvar_dump($object1->Method1());
.Angenommen, ich möchte
$property1
von innen darauf zugreifenMethod1()
, ich werde dies tunWir haben
$object2 = new Class1;
eine neue Kopie erstelltClass1
oder wir können eine Instanz sagen. Dann zeigten wir aufproperty1
von$object2
Dies wird
string(15) "I am property 1"
im Browser gedruckt .Jetzt anstatt dies drinnen zu tun
Method1()
Wir machen das
Das
$this
Objekt wird innerhalb der Klasse verwendet, um auf die Klasse selbst zu verweisen.Es ist eine Alternative, um ein neues Objekt zu erstellen und es dann so zurückzugeben
Ein anderes Beispiel
Wir haben 2 Eigenschaften mit ganzen Zahlen erstellt und diese dann hinzugefügt und das Ergebnis eingegeben
$this->result
.Vergiss das nicht
$this->property1
=$property1
=119
sie haben den gleichen Wert .. etc.
Ich hoffe das erklärt die Idee.
Diese Reihe von Videos wird Ihnen in OOP sehr helfen
https://www.youtube.com/playlist?list=PLe30vg_FG4OSEHH6bRF8FrA7wmoAMUZLv
quelle
Es bezieht sich auf die Instanz der aktuellen Klasse, wie Meder sagte.
Siehe die PHP-Dokumente . Es wird unter dem ersten Beispiel erklärt.
quelle