Web Tutorial
Now Reading
Encapsulation dan Scope Resolution Operator PHP
Inovasi Baru
1
"First, solve the problem. Then, write the code."

Halo sobat BierPinter, senang sekali bisa belajar bareng dengan kalian semua. Kali ini kita akan belajar encapsulation dan scope resolution operator PHP. Encapsulation yaitu membahas tentang metode pemanggilan alur kerja dari Class. Enkapsulasi pada intinya memberikan hak akses tertentu pada suatu property dan method dalam class tertentu yang terbagi atas 3 bagian, yaitu: Public, Protected, dan Private. Dengan mengatur hak akses pada property dan method. Class menjadi terintegrasi dan menghindari kesalahan ketika seseorang mencoba untuk mengubahnya.

Dibawah ini akan dijelaskan kapan Anda harus menggunakan Public, Protected, ataupun Private. Berikut penjelasannya:

  • Public, digunakan untuk mengatur property dan method agar dapat diakses dari luar class dan diturunkan ke class turunannya. Perlu diperhatikan, method __construct() dan __destruct() wajib menggunakan hak akses public.
  • Protected, digunakan untuk mengatur property dan method agar hanya dapat diakses di dalam class dan akan diturunkan ke class turunannya dan property atau class tersebut tidak dapat diakses secara langsung dari objek di luar class.
  • Private, digunakan untuk mengatur property dan method agar tidak dapat diakses dari luar class dan juga tidak akan diturunkan kepada class turunannya.

Cara Menggunakan Konsep Encapsulation

Metode pemanggilan alur kerja dari class.

Cara menggunakan konsep encapsulation, yaitu dengan menempatkan keyword public, protected, atau private sebelum property atau method. Biasanya kita menggunakan kata var dalam setiap contoh yang kita bahas, karena kita belum mempelajari tentang encapsulation. Menggunakan var berarti data bersifat public.

Agar lebih memahami konsep encapsulation, kita dapat melihat pada skrip dibawah ini:

<?php
class pesawat {
public $nama_pesawat;
public $model;
protected $mesin;
private $tahun_pembuatan;

public function terbangkan(){
return "Menerbangkan Pesawat $this->nama_pesawat";
}
}

class cargo extends pesawat {
public function info_pesawat(){
$this->mesin = "V3 Turbo";
return "Nama pesawat: $this->nama_pesawat, Model: $this->model, Mesin: $this->mesin";
}

public function tahun_pembuatan(){
return "Tahun pembuatan: $this->tahun_pembuatan";
}
}

$pesawat_garuda = new cargo();
$pesawat_garuda->nama_pesawat = "Cargo AirBus M112";
$pesawat_garuda->model = "M-112";

echo $pesawat_garuda->terbangkan();
echo "<br>";
echo $pesawat_garuda->info_pesawat();
echo "<br>";
echo $pesawat_garuda->tahun_pembuatan();
?>

Penjelasan Encapsulation

Pada skrip diatas, kita membuat 3 property pada class pesawat dengan masing-masing memiliki hak akses yang berbeda. Property $nama_pesawat dan $model diberik hak akses public, sehingga kita dapat menentukan nilai nama_pesawat dan model diluar class.

Property $mesin diberi hak akses protected, oleh karena itu, property $mesin tidak dapat diakses maupun diubah nilainya diluar class kecuali di dalam class turunannya. Pada skrip diatas, kita tentukan nilai property $mesin di dalam class cargo sebagai turunan dari class pesawat, yaitu di dalam method info_pesawat(). Ketika method info pesawat() di akses diluar class maka tidak menghasilkan pesan kesalahan karena tidak mengakses property $mesin secara langsung.

Berbeda dengan property $nama_pesawat, $model, dan $mesin. Property $tahun_pembuatan kita beri hak akses private, sehingga tidak dapat diakses diluar class dan tidak diturunkan ke class turunannya. Pada skrip diatas, kita mencoba mengakses property $tahun_pembuatan melalui class cargo sebagai class turunan dari class pesawat, yaitu dalam method tahun_pembuatan().

Ketika kita mencoba mengakses method tahun_pembuatan() diluar class maka akan menghasilkan pesan error, walaupun tidak mengakses property $tahun_pembuatan secara langsung, tetapi mengakses melalui class turunannya. Hal ini terjadi karena property atau method yang memiliki hak akses private tidak dapat diakses diluar class maupun dari class turunannya.

Pengertian Scope Resolution Operator

Scope resolution operator, yaitu operator yang digunakan untuk mengakses property atau method dari sebuah class secara langsung tanpa membuat objek terlebih dahulu. Cara penggunaannya dengan memberikan tanda : : di antara nama class dan method atau property yang dipanggil.

Contoh penggunaan scope resolution operator dapat dilihat pada skrip berikut:

<?php
class pesawat {
public function info_pesawat ($nama_pesawat){
return "Nama pesawat: $nama_pesawat";
}
}

echo pesawat::info_pesawat ("Cargo AirBus M112");
?>

Pada skrip diatas, kita mengakses method info_pesawat() tanpa membuat objek terlebih dahulu, tetapi menggunakan scope resolution operator. Jika ditulis dengan menggunakan objek terlebih dahulu, maka skrip diatas akan sama hasilnya seperti kita menuliskan skrip berikut:

<?php
class pesawat {
public function info_pesawat ($nama_pesawat){
return "Nama pesawat: $nama_pesawat";
}
}
// jika ditulis objectnya
$pesawat_garuda = new pesawat();
echo $pesawat_garuda->info_pesawat ("Cargo AirBus M112");
?>

Demikianlah pembelajaran tentang Encapsulation dan Scope Resolution Operator PHP yang dijelaskan oleh BierPinter. Buat teman-teman yang tertarik dan suka materi kami. Teman-teman bisa like dan share untuk membantu kami dalam membuat konten yang lebih menarik lagi. Terima kasih 🙂

What's your reaction?
Luar Biasa
75%
Suka Sekali
0%
Keren
25%
Kagum
0%
Jelek
0%
Tidak Suka
0%
About The Author
Carollous Dachi
1 Comments

Leave a Response