Soru PHP'de bu değişkenin anlamı nedir?


Değişkeni görüyorum $this PHP'de her zaman ve ne için kullanıldığı hakkında hiçbir fikrim yok. Kişisel olarak hiç kullanmadım ve arama motorları $ ve ben "bu" kelimesi için bir arama ile sonuçlanır.

Birisi bana PHP'deki bu değişkenin nasıl çalıştığını söyleyebilir mi?


76
2017-10-06 03:45


Menşei




Cevaplar:


Mevcut nesneye bir referanstır, en çok nesne yönelimli kodda kullanılır.

Örnek:

<?php
class Person {
    public $name;

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

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

Bu, 'Jack' dizesini oluşturulan nesnenin bir özelliği olarak saklar.


101
2017-10-06 03:46



"Mevcut nesne" terminolojisi için +1, bazen kasten olmayan davranışını tanımlamak için daha doğru bir yoldur $this. - Alex Barrett
KillerPHP OOP öğretici benzer örnek kod gördüm :) killerphp.com/tutorials/php-objects-page-1 - Edson


Hakkında bilgi edinmenin en iyi yolu $this php'deki değişken PHP'ye ne olduğunu sormaktır. Bize sormayın, derleyiciye sorun:

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



Birkaç noktalı virgül unuttun: D - smileBeda


Eski sorusunu biliyorum, yine de başka bir açıklama $ this. $ this Esas olarak bir sınıfın özelliklerini belirtmek için kullanılır.

Örnek:

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

çıktı:

function variable

member variable

11
2018-02-24 06:41





Bir sınıf örneğini kendi içinde, diğer birçok nesne yönelimli dil ile aynı şekilde göndermenin yolu budur.

İtibaren PHP belgeleri:

Sözde değişken $ bu kullanılabilir   içinde bir yöntem çağrıldığında   nesne bağlamı. $ bu bir referanstır   çağrı nesnesine (genellikle   Yöntemin ait olduğu nesne,   ama muhtemelen başka bir nesne, eğer   yöntem statik olarak denir   ikincil bir nesnenin içeriği).


8
2017-10-06 03:47





Bunu kullanmazsak ve örnek değişkenlere sahip olmaya çalışırsak ne olacağını görelim Aşağıdaki kod snippet'iyle aynı ada sahip yapıcı argümanları

<?php

class Student {
    public $name;

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

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

?>

Hiçbir şey ifade etmiyor ama

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

?>

bu 'Tom' yankılanıyor


6
2018-06-19 14:59



Kod snippet'leriniz tam olarak aynı mı yoksa bir şey mi eksik? - Demento
@Demento: evet. Kullanarak düzeltdim $thisikinci kurucuda. - Axel Guilmin


Bir sınıf oluşturduğunuzda (birçok durumda) örnek değişkenleri ve yöntemleri (aka. functions) var. $ bu örnek değişkenlere erişir, böylece fonksiyonlarınız bu değişkenleri alabilir ve onlarla ne yapmak isterlerse onu yaparlar.

mederin örneğinin başka bir versiyonu:

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





$ bu özel bir değişkendir ve aynı nesneye atıfta bulunur. kendisi.

aslında mevcut sınıfın örneğini ifade eder

yukarıdaki ifadeyi temizleyecek bir örnek

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



lütfen biraz daha detaylandırın - Neeraj Rathod


$this olduğu çağrı nesnesine bir başvuru (genellikle yöntemin ait olduğu nesne, ancak başka bir nesne, eğer yöntem ikincil bir nesnenin bağlamından statik olarak adlandırılırsa).


2
2017-10-29 14:18





Geçerli sınıfın örneğine başvurur, Meder dedim.

Bakın PHP Dokümanlar. İlk örnekte açıklandı.


0
2017-10-06 03:47