Khoerodin Developer, writer, and maker |

Developer, writer, and maker

Self dan $this, Apa Perbedaanya dalam OOP PHP? - Ep. 11

Dalam bahasa yang sangat sederhana $this digunakan untuk mereferensikan property atau method yang berada dalam current object. Sedangkan self digunakan untuk mereferensikan property atau method yang berada dalam current class.

Jika sudah faham artikel saya tentang pewarisan, mari kita perhatikan dan praktekkan kode dibawah ini:

1. Penggunaan $this

<?php
class Penulis {

    public function saya() {
        echo "Saya penulis :)";
    }

    public function sayaAdalah() {
       $this->saya();
    }
}

class Programmer extends Penulis {

    public function saya() {
        echo "Saya programmer :)";
    }

}

$TukangKode = new Programmer();
$TukangKode->sayaAdalah();

Jika kode di atas dijalankan maka outputnya Saya programmer :).

Jika kita perhatikan, baik class Penulis maupun class Programmer sama-sama memiliki method saya(). Kemudian class Programmer adalah class turunan dari class Penulis yaitu dengan melakukan extends Penulis.

Pada baris bawah terdapat instansiai object $TukangKode dari class Programmer. Selanjutnya object $TukangKode memanggil method sayaAdalah() yang berasal dari class induk atau parent class. Method sayaAdalah() memanggil method saya() menggunakan $this diikuti ->.

Karena menggunakan $this ini berarti yang dimaksud saya() bukanlah saya() yang berada dalam parent class atau class Penulis melainkan saya() yang berada dalam object-nya sendiri atau dalam object $TukangKode, yaitu saya() yang berisi echo "Saya programmer :)";.

2. Penggunaan self

<?php
class Penulis {

    public function saya() {
        echo "Saya penulis :)";
    }

    public function sayaAdalah() {
       self::saya();
    }
}

class Programmer extends Penulis {

    public function saya() {
        echo "Saya programmer :)";
    }

}

$TukangKode = new Programmer();
$TukangKode->sayaAdalah();

Jika kode di atas dijalankan maka outputnya Saya penulis :).

Perbedaan kode program ini dengan kode program sebelumnya hanyalah pada method sayaAdalah(), dalam method tersebut tidak lagi menggunakan $this ketika memanggil method saya() melainkan menggunakan self.

Karena menggunakan self ini berarti yang dimaksud saya() bukanlah saya() yang berada dalam object-nya sendiri atau dalam object $TukangKode melainkan saya() yang berada dalam class-nya sendiri atau class Penulis yang berisi echo "Saya penulis :)";.

Mudah difahami kan? jika belum faham silakan berikan komentar 😄.