Pytanie Co oznacza zmienna $ this w PHP?


Widzę zmienną $this w PHP przez cały czas i nie mam pojęcia, do czego jest używany. Nigdy go osobiście nie używałem, a wyszukiwarki ignorują $ i kończę poszukiwaniem słowa "to".

Czy ktoś może mi powiedzieć, w jaki sposób zmienna $ to działa w PHP?


76
2017-10-06 03:45


pochodzenie




Odpowiedzi:


Jest to odnośnik do bieżącego obiektu, najczęściej używany w kodzie obiektowym.

Przykład:

<?php
class Person {
    public $name;

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

$jack = new Person('Jack');
echo $jack->name;

Przechowuje ciąg "Jack" jako własność utworzonego obiektu.


101
2017-10-06 03:46



+1 dla terminologii "bieżący obiekt", ponieważ jest to dokładniejszy sposób opisania czasami nieintuicyjnego zachowania $this. - Alex Barrett
Widziałem podobny przykładowy kod w samouczku KillerPHP OOP :) killerphp.com/tutorials/php-objects-page-1 - Edson


Najlepszy sposób, aby dowiedzieć się o $this zmienna w php to zapytanie PHP co to jest. Nie pytaj nas, zapytaj kompilatora:

print gettype($this);            //object
print get_object_vars($this);    //Array
print is_array($this);           //false
print is_object($this);          //true
print_r($this);                  //dump of the objects inside it
print count($this);              //true
print get_class($this);          //YourProject\YourFile\YourClass
print isset($this);              //true
print get_parent_class($this);   //YourBundle\YourStuff\YourParentClass
print gettype($this->container); //object

28
2017-12-11 18:23



zapomniałeś kilka średników: D - smileBeda


Znam jego stare pytanie, w każdym razie inne dokładne wyjaśnienie $ this. $ this jest używany głównie do odnoszenia właściwości klasy.

Przykład:

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
   }
}

wydajność:

function variable

member variable

11
2018-02-24 06:41





Jest to sposób na odwołanie się do instancji klasy z samej siebie, takiej samej, jak wiele innych języków zorientowanych obiektowo.

Od Dokumenty PHP:

Pseudo-zmienna $ ta jest dostępna   gdy metoda jest wywoływana z poziomu   kontekst obiektu. $ to jest referencja   do obiektu wywołującego (zwykle do   obiekt, do którego należy ta metoda,   ale prawdopodobnie inny obiekt, jeśli   metoda nazywa się statycznie z   kontekst obiektu drugorzędnego).


8
2017-10-06 03:47





Zobaczmy, co się stanie, jeśli nie użyjemy $ this i spróbujmy mieć zmienne instancji i argumenty konstruktora o tej samej nazwie z następującym fragmentem kodu

<?php

class Student {
    public $name;

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

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

?>

To echo tylko

<?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;

?>

to echo "Tom"


6
2018-06-19 14:59



Twoje fragmenty kodu są dokładnie takie same, czy też brakuje mi czegoś? - Demento
@Demento: tak. Naprawiłem to, używając $thisw drugim konstruktorze. - Axel Guilmin


podczas tworzenia klasy masz (w wielu przypadkach) zmienne i metody instancji (także funkcje). $ this uzyskuje dostęp do tych zmiennych instancji, aby twoje funkcje mogły przyjmować te zmienne i robić to, czego potrzebują, aby robić z nimi, co chcesz.

inna wersja przykładu medera:

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

2
2017-10-06 14:47





$ to jest specjalna zmienna i odnosi się do tego samego obiektu tj. samo.

w rzeczywistości odnosi się do instancji obecnej klasy

oto przykład, który wyczyści powyższe stwierdzenie

<?php
 class Books {
  /* Member variables */
  var $price;
  var $title;

  /* Member functions */
  function setPrice($par){
     $this->price = $par;
  }

  function getPrice(){
     echo $this->price ."<br/>";
  }

  function setTitle($par){
     $this->title = $par;
  }

  function getTitle(){
     echo $this->title ." <br/>";
  }
}
?> 

2
2018-03-26 07:20



proszę, rozwiń go trochę więcej - Neeraj Rathod


$this jest odniesienie do obiektu wywołującego (zwykle obiekt, do którego należy ta metoda, ale prawdopodobnie inny obiekt, jeśli metoda jest wywoływana statycznie z kontekstu obiektu drugorzędnego).


2
2017-10-29 14:18





Odnosi się do instancji obecnej klasy, jak meder powiedziany.

Zobacz Dokumenty PHP. Zostało to wyjaśnione w pierwszym przykładzie.


0
2017-10-06 03:47