Was bedeutet die Variable $this in PHP?

Lesezeit: 8 Minuten

Was bedeutet die Variable this in PHP
waiwai933

Ich sehe die Variable $this in PHP und ich habe keine Ahnung, wofür es verwendet wird. Ich habe es nie persönlich benutzt.

Kann mir jemand sagen, wie die Variable $this funktioniert in PHP?

Was bedeutet die Variable this in PHP
meder omuraliev

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.

  • Ähnlichen Beispielcode im KillerPHP-OOP-Tutorial gesehen 🙂 killerphp.com/tutorials/php-objects-page-1

    – Edson

    7. Januar 2017 um 8:59 Uhr


  • Schöne und einfache Erklärung. @meder omuraliev

    – Kuchen

    22. Juli 2019 um 15:52 Uhr

1646916248 207 Was bedeutet die Variable this in PHP
Erich Leschinski

Der beste Weg, um sich über die zu informieren $this Variable in PHP ist es, es gegen den Interpreter in verschiedenen Kontexten zu versuchen:

print isset($this);              //true,   $this exists
print gettype($this);            //Object, $this is an object 
print is_array($this);           //false,  $this isn't an array
print get_object_vars($this);    //true,   $this's variables are an array
print is_object($this);          //true,   $this is still an object
print get_class($this);          //YourProject\YourFile\YourClass
print get_parent_class($this);   //YourBundle\YourStuff\YourParentClass
print gettype($this->container); //object
print_r($this);                  //delicious data dump of $this
print $this->yourvariable        //access $this variable with ->

Also die $this Pseudo-Variable hat die Methoden und Eigenschaften des aktuellen Objekts. So etwas ist nützlich, weil Sie damit auf alle Member-Variablen und Member-Methoden innerhalb der Klasse zugreifen können. Zum Beispiel:

Class Dog{
    public $my_member_variable;                             //member variable

    function normal_method_inside_Dog() {                   //member method

        //Assign data to member variable from inside the member method
        $this->my_member_variable = "whatever";

        //Get data from member variable from inside the member method.
        print $this->my_member_variable;
    }
}

$this ist ein Verweis auf ein PHP Object das vom Interpreter für Sie erstellt wurde und ein Array von Variablen enthält.

Wenn Sie anrufen $this innerhalb einer normalen Methode in einer normalen Klasse, $this gibt das Objekt (die Klasse) zurück, zu dem diese Methode gehört.

Es ist möglich für $this undefiniert sein, wenn der Kontext kein übergeordnetes Objekt hat.

php.net hat eine große Seite, die über die objektorientierte PHP-Programmierung spricht und wie $this verhält sich kontextabhängig.
https://www.php.net/manual/en/language.oop5.basic.php

  • Tolle Erklärung. Ich möchte nur hinzufügen, dass $this als Pseudoobjekt/-variable behandelt werden kann, die beim Zugriff auf die Eigenschaften der aktuellen Klasse hilft.

    – S.Alvi

    25. Dezember 2019 um 7:22 Uhr

1646916249 322 Was bedeutet die Variable this in PHP
Loyola

Ich kenne seine alte Frage, jedenfalls eine andere genaue Erklärung dazu $das. $das wird hauptsächlich verwendet, um auf Eigenschaften einer Klasse zu verweisen.

Beispiel:

Class A
{
   public $myname;    //this is a member variable of this class

function callme() {
    $myname="function variable";
    $this->myname="Member variable";
    echo $myname;                  //prints function variable
    echo $this->myname;              //prints member variable
   }
}

Ausgang:

function variable

member variable

Auf diese Weise kann auf eine Instanz einer Klasse von sich selbst aus verwiesen werden, genau wie in vielen anderen objektorientierten Sprachen.

Von dem PHP-Dokumente:

Die Pseudovariable $this ist verfügbar, wenn eine Methode aus einem Objektkontext aufgerufen wird. $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).

1646916249 710 Was bedeutet die Variable this in PHP
Benutzer6485832

Mal sehen, was passiert, wenn wir $this nicht verwenden und versuchen, Instanzvariablen und Konstruktorargumente mit demselben Namen mit dem folgenden Codeausschnitt zu haben

<?php

class Student {
    public $name;

    function __construct( $name ) {
        $name = $name;
    }
};

$tom = new Student('Tom');
echo $tom->name;

?>

Es hallt nichts aber wider

<?php

class Student {
    public $name;

    function __construct( $name ) {
        $this->name = $name; // Using 'this' to access the student's name
    }
};

$tom = new Student('Tom');
echo $tom->name;

?>

das erinnert an ‘Tom’

  • Ihre Code-Snippets sind beide genau gleich, oder übersehe ich etwas?

    – Demenz

    19. Juni 2016 um 15:40 Uhr

  • @Demento: Ja. Ich habe es behoben, mit $this im zweiten Konstruktor.

    – Axel Guilmin

    19. Juni 2016 um 17:01 Uhr

  • Würden Sie bitte erklären, warum name = $name mir nicht erlaubt, auf den Namen des Schülers zuzugreifen? Es ergibt für mich keinen Sinn.

    – Marco Floriano

    9. November 2019 um 13:46 Uhr


  • Mario, es liegt am Umfang. innerhalb der Funktion $name ist Tom, aber außerhalb der Funktion hat es keinen Wert, da sein Gültigkeitsbereich auf den der Funktion beschränkt ist.

    – Liebesina

    24. Mai 2020 um 15:33 Uhr

1646916249 29 Was bedeutet die Variable this in PHP
cp3

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 nehmen und tun können, was sie tun müssen, um mit ihnen zu tun, was Sie wollen.

eine andere version von meders beispiel:

class Person {

    protected $name;  //can't be accessed from outside the class

    public function __construct($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}
// this line creates an instance of the class Person setting "Jack" as $name.  
// __construct() gets executed when you declare it within the class.
$jack = new Person("Jack"); 

echo $jack->getName();

Output:

Jack

  • Ihre Code-Snippets sind beide genau gleich, oder übersehe ich etwas?

    – Demenz

    19. Juni 2016 um 15:40 Uhr

  • @Demento: Ja. Ich habe es behoben, mit $this im zweiten Konstruktor.

    – Axel Guilmin

    19. Juni 2016 um 17:01 Uhr

  • Würden Sie bitte erklären, warum name = $name mir nicht erlaubt, auf den Namen des Schülers zuzugreifen? Es ergibt für mich keinen Sinn.

    – Marco Floriano

    9. November 2019 um 13:46 Uhr


  • Mario, es liegt am Umfang. innerhalb der Funktion $name ist Tom, aber außerhalb der Funktion hat es keinen Wert, da sein Gültigkeitsbereich auf den der Funktion beschränkt ist.

    – Liebesina

    24. Mai 2020 um 15:33 Uhr

Dies ist eine lange detaillierte Erklärung. Ich hoffe, das hilft den Anfängern. Ich werde es sehr einfach machen.

Zuerst erstellen wir eine Klasse

<?php 

class Class1
{
    
}

Sie können das schließende PHP-Tag weglassen ?> wenn Sie nur PHP-Code verwenden.

Jetzt fügen wir Eigenschaften und eine Methode hinzu Class1.

<?php 

class Class1
{
    public $property1 = "I am property 1";
    public $property2 = "I am property 2";

    public function Method1()
    {
        return "I am Method 1";
    }
}

Die Eigenschaft ist nur eine einfache Variable , aber wir geben ihr den Namen Eigenschaft, weil sie sich innerhalb einer Klasse befindet.

Die Methode ist nur eine einfache Funktion , aber wir sagen Methode, weil sie sich auch innerhalb einer Klasse befindet.

Die public Schlüsselwort bedeuten, dass auf die Methode oder eine Eigenschaft überall im Skript zugegriffen werden kann.

Nun, wie wir die Eigenschaften und die Methode darin verwenden können Class1 ?

Die Antwort ist das Erstellen einer Instanz oder eines Objekts, stellen Sie sich ein Objekt als eine Kopie der Klasse vor.

<?php 

class Class1
{
    public $property1 = "I am property 1";
    public $property2 = "I am property 2";

    public function Method1()
    {
        return "I am Method 1";
    }
}

$object1 = new Class1;
var_dump($object1);

Wir haben ein Objekt erstellt, das ist $object1 das ist eine Kopie von Class1 mit all seinen Inhalten. Und wir haben den gesamten Inhalt abgeladen $object1 verwenden var_dump() .

Dies wird Ihnen geben

object(Class1)#1 (2) { ["property1"]=> string(15) "I am property 1" ["property2"]=> string(15) "I am property 2" }

Also alle Inhalte von Class1 sind in $object1 außer Method1 ich weiß nicht, warum Methoden beim Dumping von Objekten nicht angezeigt werden.

Was nun, wenn wir zugreifen wollen $property1 nur. Es ist einfach, wir tun es var_dump($object1->property1); haben wir gerade hinzugefügt ->property1 wir haben darauf hingewiesen.

wir können auch zugreifen Method1() tun wir var_dump($object1->Method1());.

Angenommen, ich möchte zugreifen $property1 von innen Method1() ich werde dies tun

<?php 

class Class1
{
    public $property1 = "I am property 1";
    public $property2 = "I am property 2";

    public function Method1()
    {   
        $object2 = new Class1;
        return $object2->property1;
    }
}

$object1 = new Class1;
var_dump($object1->Method1()); 

wir kreierten $object2 = new Class1; das ist eine neue Kopie von Class1 oder wir können eine Instanz sagen. Dann zeigten wir auf property1 von $object2

return $object2->property1;

Dies wird gedruckt string(15) "I am property 1" im Browser.

Anstatt das jetzt drinnen zu tun Method1()

$object2 = new Class1;
return $object2->property1;

Wir machen das

return $this->property1;

Die $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

$object2 = new Class1;
return $object2->property1;

Ein anderes Beispiel

<?php 

class Class1
{
    public $property1 = 119;
    public $property2 = 666;
    public $result;

    public function Method1()
    {   
        $this->result = $this->property1 + $this->property2;
        return $this->result;
    }
}

$object1 = new Class1;
var_dump($object1->Method1());

Wir haben 2 Eigenschaften erstellt, die ganze Zahlen enthalten, und dann haben wir sie hinzugefügt und das Ergebnis eingefügt $this->result.

Vergiss das nicht

$this->property1 = $property1 = 119

sie haben denselben Wert .. usw

Ich hoffe, das erklärt die Idee.

Diese Videoserie wird Ihnen bei OOP sehr helfen

https://www.youtube.com/playlist?list=PLe30vg_FG4OSEHH6bRF8FrA7wmoAMUZLv

987960cookie-checkWas bedeutet die Variable $this in PHP?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy