Jawaban:
Ini adalah referensi ke objek saat ini, ini paling sering digunakan dalam kode berorientasi objek.
Contoh:
<?php
class Person {
public $name;
function __construct( $name ) {
$this->name = $name;
}
};
$jack = new Person('Jack');
echo $jack->name;
Ini menyimpan string 'Jack' sebagai properti dari objek yang dibuat.
$this
variabel dalam PHP adalah dengan mencobanya terhadap interpreter dalam berbagai konteks: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 ->
Jadi $this
pseudo-variabel memiliki metode dan properti Objek Saat Ini. Hal seperti itu berguna karena memungkinkan Anda mengakses semua variabel anggota dan metode anggota di dalam kelas. Sebagai contoh:
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
adalah referensi ke PHP Object
yang dibuat oleh penerjemah untuk Anda, yang berisi larik variabel.
Jika Anda memanggil $this
di dalam metode normal di kelas normal, $this
mengembalikan Objek (kelas) tempat metode itu berada.
Mungkin $this
saja tidak ditentukan jika konteksnya tidak memiliki Objek induk.
php.net memiliki halaman besar yang berbicara tentang pemrograman berorientasi objek PHP dan bagaimana $this
berperilaku tergantung pada konteks.
https://www.php.net/manual/en/language.oop5.basic.php
Saya tahu pertanyaan lamanya, lagi pula penjelasan pasti lainnya tentang $ this . $ this digunakan terutama untuk merujuk properti kelas.
Contoh:
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
}
}
keluaran:
function variable
member variable
Ini adalah cara untuk mereferensikan instance kelas dari dalam dirinya sendiri, sama seperti banyak bahasa berorientasi objek lainnya.
Dari dokumen PHP :
Pseudo-variable $ this tersedia ketika metode dipanggil dari dalam konteks objek. $ this adalah referensi ke objek pemanggil (biasanya objek di mana metode itu berada, tetapi mungkin objek lain, jika metode dipanggil secara statis dari konteks objek sekunder).
Mari kita lihat apa yang terjadi jika kita tidak menggunakan $ this dan mencoba untuk memiliki variabel instan dan argumen konstruktor dengan nama yang sama dengan potongan kode berikut
<?php
class Student {
public $name;
function __construct( $name ) {
$name = $name;
}
};
$tom = new Student('Tom');
echo $tom->name;
?>
Itu hanya menggema
<?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;
?>
ini menggemakan 'Tom'
$this
di konstruktor kedua.
$name
adalah Tom, tetapi di luar fungsi, tidak ada nilai apa pun, karena ruang lingkupnya terbatas pada fungsi tersebut.
ketika Anda membuat kelas, Anda memiliki (dalam banyak kasus) variabel dan metode instan (alias fungsi). $ this mengakses variabel instan tersebut sehingga fungsi Anda dapat mengambil variabel tersebut dan melakukan apa yang diperlukan untuk melakukan apa pun yang Anda inginkan.
versi lain dari contoh meder:
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
$this
adalah referensi ke objek pemanggil (biasanya objek yang memiliki metode tersebut, tetapi mungkin objek lain, jika metode tersebut dipanggil secara statis dari konteks objek sekunder).
$ this adalah variabel khusus dan mengacu pada objek yang sama yaitu. diri.
itu sebenarnya merujuk contoh kelas saat ini
berikut adalah contoh yang akan menghapus pernyataan di atas
<?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/>";
}
}
?>
Ini penjelasan rinci yang panjang. Saya harap ini akan membantu para pemula. Saya akan membuatnya sangat sederhana.
Pertama, mari buat kelas
<?php
class Class1
{
}
Anda dapat menghilangkan tag penutup php ?>
jika Anda hanya menggunakan kode php.
Sekarang mari tambahkan properti dan metode di dalamnya Class1
.
<?php
class Class1
{
public $property1 = "I am property 1";
public $property2 = "I am property 2";
public function Method1()
{
return "I am Method 1";
}
}
Properti hanyalah variabel sederhana, tetapi kami memberinya nama properti karena di dalam kelas.
Metode ini hanyalah sebuah fungsi sederhana, tetapi kami mengatakan metode karena itu juga di dalam kelas.
Kata public
kunci berarti bahwa metode atau properti dapat diakses di mana saja dalam skrip.
Sekarang, bagaimana kita dapat menggunakan properti dan metode di dalamnya Class1
?
Jawabannya adalah membuat sebuah instance atau sebuah objek, anggaplah sebuah objek sebagai salinan kelas.
<?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);
Kami membuat sebuah objek, yang merupakan $object1
salinan dari Class1
semua isinya. Dan kami membuang semua konten yang $object1
digunakan var_dump()
.
Ini akan memberimu
object(Class1)#1 (2) { ["property1"]=> string(15) "I am property 1" ["property2"]=> string(15) "I am property 2" }
Jadi semua konten Class1
ada di dalam $object1
, kecuali Method1
, saya tidak tahu mengapa metode tidak muncul saat membuang objek.
Sekarang bagaimana jika kita ingin mengakses $property1
saja. Sederhana saja, kami lakukan var_dump($object1->property1);
, kami baru saja menambahkan ->property1
, kami menunjuk ke sana.
kami juga dapat mengakses Method1()
, kami melakukannya var_dump($object1->Method1());
.
Sekarang misalkan saya ingin mengakses $property1
dari dalam Method1()
, saya akan melakukan ini
<?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());
kami buat $object2 = new Class1;
yang merupakan salinan baru Class1
atau kami dapat mengatakan sebuah contoh. Lalu kami menunjuk property1
dari$object2
return $object2->property1;
Ini akan dicetak string(15) "I am property 1"
di browser.
Sekarang alih-alih melakukan ini di dalam Method1()
$object2 = new Class1;
return $object2->property1;
Kami melakukan ini
return $this->property1;
The $this
objek digunakan di dalam kelas untuk merujuk pada kelas itu sendiri.
Ini adalah alternatif untuk membuat objek baru dan kemudian mengembalikannya seperti ini
$object2 = new Class1;
return $object2->property1;
Contoh lain
<?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());
Kami membuat 2 properti yang berisi bilangan bulat dan kemudian kami menambahkannya dan memasukkan hasilnya $this->result
.
Jangan lupakan itu
$this->property1
= $property1
=119
mereka memiliki nilai yang sama .. dll
Saya harap itu menjelaskan idenya.
Rangkaian video ini akan banyak membantu Anda dalam OOP
https://www.youtube.com/playlist?list=PLe30vg_FG4OSEHH6bRF8FrA7wmoAMUZLv
Ini mengacu pada instance dari kelas saat ini, seperti yang dikatakan meder .
Lihat Dokumen PHP . Ini dijelaskan di bawah contoh pertama.