Frage Was bedeutet die Variable $ in PHP?


Ich sehe die Variable $this in PHP die ganze Zeit und ich habe keine Ahnung, wofür es verwendet wird. Ich habe es nie persönlich benutzt und die Suchmaschinen ignorieren das $ und ich suche nach dem Wort "this".

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


75
2017-10-06 03:45


Ursprung


Antworten:


Es ist eine Referenz auf das aktuelle Objekt, es 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;

Dies speichert die 'Jack'-Zeichenfolge als eine Eigenschaft des erstellten Objekts.


99
2017-10-06 03:46



Der beste Weg, etwas über das zu lernen $this Variable in PHP ist PHP zu fragen, was es ist. Frag uns nicht, frage den Compiler:

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



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

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

Ausgabe:

function variable

member variable

11
2018-02-24 06:41



Es ist der Weg, eine Instanz einer Klasse von sich aus zu referenzieren, genau wie viele andere objektorientierte Sprachen.

Von dem PHP-Dokumente:

Die Pseudovariable $ this ist verfügbar   wenn eine Methode von einem aufgerufen wird   Objektkontext $ Dies ist eine Referenz   zu dem aufrufenden Objekt (normalerweise der   Objekt, zu dem die Methode gehört,   aber möglicherweise ein anderes Objekt, wenn die   Methode wird statisch aus dem aufgerufen   Kontext eines sekundären Objekts).


8
2017-10-06 03:47



Lass uns sehen, was passiert, wenn wir $ this nicht verwenden und versuchen, Instanzvariablen und zu haben Konstruktor Argumente mit dem gleichen Namen mit dem folgenden Code-Snippet

<?php

class Student {
    public $name;

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

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

?>

Es hallt nichts als

<?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 Echo "Tom"


6
2018-06-19 14:59



Wenn Sie eine Klasse erstellen, haben Sie (in vielen Fällen) Instanzvariablen und Methoden (auch bekannt als Funktionen). $ this greift auf diese Instanzvariablen zu, so dass Ihre Funktionen diese Variablen übernehmen und tun können, was sie tun müssen, was immer 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

2
2017-10-06 14:47



$ Dies ist eine spezielle Variable und bezieht sich auf das gleiche Objekt, dh. selbst.

es verweist tatsächlich auf die aktuelle Klasse

Hier ist ein Beispiel, das die obige Aussage klären wird

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