Pengenalan Object Oriented Programming pada Bahasa PHP
Haloo Abangkuhh 🔥🔥! Jadi, kalau sebelumnya kita udah sering main-main sama Bahasa PHP, sekarang saatnya kita naik level dengan belajar konsep yang lebih advanced dan powerful. Yaitu mengenai Object Oriented Programming (OOP).
Bayangin OOP itu kayak punya blueprint buat bangun sesuatu di dunia coding. Dengan konsep OOP, kita bisa bikin blueprint kode kita jadi lebih terstruktur, efisien, dan gampang dimengerti. Jadi, siap-siap aja untuk belajar konsep OOP PHP dengan cara yang asik dan menyenangkan!
Ayo, kita mulai petualangan kita ke dunia OOP PHP! Siap-siap buat coding dengan gaya baru yang lebih keren dan powerful! 🚀
Table of Content
· Apa itu Object Oriented Programming
· Pengenalan Class
· Membuat Objek
· Properti
· Method
· Constructor
· Pewarisan
· Namespace
· Import
· Visibilitas
∘ Public
∘ Protected
∘ Private
Apa itu Object Oriented Programming
Sesuai dengan namanya, Object-Oriented Programming (OOP) berarti pemrograman yang berorientasi objek, di mana kita menggunakan konsep objek untuk mengorganisir dan mengelola kode. Dalam sebuah objek, terdapat properti atau atribut dan method atau fungsi. Mungkin teman-teman masih kesulitan memahami objek, mari kita analogikan. Jika kita ibaratkan mobil sebagai sebuah objek, maka mobil akan memiliki properti seperti warna dan merk, contohnya warna silver dan merk BMW. Hal ini dinamakan properti atau atribut. Selain itu, sebuah mobil pasti dapat melakukan aksi seperti nge-gas dan nge-rem, bukan? Nah, inilah yang dinamakan method atau fungsi.
Oke, dengan demikian, teman-teman seharusnya dapat lebih mudah memahami konsep objek dalam OOP. Perlu diingat bahwa OOP membantu kita mengorganisir kode seperti mengelola objek dalam dunia nyata, membuatnya lebih terstruktur dan modular.
Pengenalan Class
Secara singkatnya Class adalah blueprint atau cetakan untuk membuat sebuah objek. Class berisi deklarasi semua properti dan method yang akan dimiliki objek. Mari kita ambil contoh kasus pada mobil, pada dasarnya semua mobil yang di produksi setidaknya mempunyai warna dan merk serta mobil tersebut bisa melakukan aksi seperti nge-gas dan nge-rem. Nah kita sudah mendeklarasikan properti dan method yang akan dimiliki oleh mobil
Selanjutnya kita akan aplikasikan class
pada kode program. Sebelumnya kita buat folder baru didalam htdocs
misal saja p3-class
, hal ini diperlukan supaya teman teman memiliki histori pembelajaran yang jelas. Setelah dibuat lalu buka folder tersebut dengan vscode, bagi yang belum paham silahkan baca modul pertama. buat file baru bernama class.php
lalu isikan kode program berikut ini
class Mobil
{
public $warna;
public $merk;
public function gas()
{
echo "Mobil maju";
}
public function rem()
{
echo "Mobil berhenti";
}
}
Pada kode diatas, kita membuat class bernama Mobil
. Class diatas digunakan untuk deklarasi properti dan method yang akan dimiliki oleh objek. Jangan pedulikan keyword public
diatas, itu adalah visibilitas
yang akan kita bahas pada materi selanjutnya
Membuat Objek
Seperti yang dibilang diawal tadi, class
hanyalah sebuah blueprint atau cetakan untuk membuat objek. Lalu bagaimana caranya membuat objek dari sebuah class
? Masih didalam file class.php
tambahkan kode program berikut ini
$mobil = new Mobil(); // membuat objek lalu disimpan ke variabel $mobil
Untuk membuat objek baru dari sebuah class dibutuhkan keywod new
disusul dengan nama class contoh new Mobil()
.
Properti
Properti adalah data yang bisa kita sisipkan dalam sebuah objek. Pada tahap sebelumnya kita sudah membuat properti untuk objek mobil namun properti tersebut masih kosong karena memang belum kita set. Kita bisa memanipulasi data properti dengan cara berikut ini.
$mobil->warna = "Silver"; // set properti warna
$mobil->merk = "BMW"; // set properti merk
echo "Mobil saya warna " . $mobil->warna;
echo "<br>";
echo "Mobil saya merk " . $mobil->merk;
Method
Sama seperti properti kita juga bisa menyisipkan method atau fungsi kedalam class. Pada class Mobil
yang sudah kita buat sebelumnya kita sudah mendeklarasikan dua method yaitu gas
dan rem
. Kita bisa memanggil kedua method tersebut dengan cara
$mobil->gas(); // panggil method gas()
echo "<br>";
$mobil->rem(); // panggil method rem()
Constructor
Constructor adalah sebuah fungsi yang akan otomatis dijalankan pertama kali ketika objek dibuat. Yang namanya fungsi pasti bisa ditambahkan parameter. Lalu bagaimana cara membuat fungsi constructor? kita ubah class Mobil
sebelumnya menjadi berikut ini
class Mobil
{
public $warna;
public $merk;
public function __construct($warnaMobil, $merkMobil)
{
$this->warna = $warnaMobil;
$this->merk = $merkMobil;
}
public function gas()
{
echo "Mobil maju";
}
public function rem()
{
echo "Mobil berhenti";
}
}
Pada contoh diatas kita gunakan fungsi constructor
untuk mengatur nilai properti warna
dan merk
, sehingga begitu objek dibuat properti sudah memiliki nilai kita tidak perlu mendefinisikan secara manual seperti sebelumnya. Keyword $this
digunakan untuk mengakses properti atau method dalam lingkup class
itu sendiri untuk lebih lengkapnya teman teman bisa baca artikel ini
// masih pada file class.php
// kita ubah cara membuat objek barunya
$mobil = new Mobil("Silver", "BMW");
echo "Mobil saya warna " . $mobil->warna;
echo "<br>";
echo "Mobil saya merk " . $mobil->merk;
Karena fungsi constructor
membutuhkan dua parameter maka pada saat membuat objek kita harus memberikan parameter tersebut jika tidak maka akan terjadi error
Pewarisan
Pewarisan atau inheritance adalah kemampuan untuk menurunkan sebuah class ke class lain, kita bisa membuat class child
dan class parent
. Class child
hanya bisa memiliki satu class parent
, sedangkan parent
bisa memiliki banyak child
. Saat sebuah class diturunkan, maka semua properti dan method yang ada di class parent
, secara otomatis akan dimiliki oleh class child
Buat file baru bernama pewarisan.php
lalu isikan dengan kode program berikut ini
class Binatang
{
public $nama;
public $jenis;
public function __construct($nama, $jenis)
{
$this->nama = $nama;
$this->jenis = $jenis;
}
public function infoBinatang()
{
echo "Nama: {$this->nama}, Jenis: {$this->jenis}";
}
}
class Kucing extends Binatang
{
public $suara;
public function __construct($nama, $jenis, $suara)
{
// memanggil construct milik parent dalam hal ini agar properti yang diwariskan memiliki nilai
parent::__construct($nama, $jenis); // panggil fungsi constructor milik parent
$this->suara = $suara;
}
public function suaraKucing()
{
echo "Kucing saya namanya {$this->nama} suaranya {$this->suara}";
}
}
Pada contoh diatas class Binatang
merupakan parent
sedangkan Kucing
merupakan child
. Kita bisa melakukan pewarisan menggunakan keyword extends
. class Kucing
akan mewarisi semua properti dan method milik Binatang
namun class Kucing
juga bisa membuat properti dan methodnya sendiri seperti contoh diatas ditambahkan properti suara
, method suaraKucing
dan fungsi constructor.
Namespace
Namespace digunakan untuk mengelompokkan dan mengorganisir kelas, fungsi, dan konstanta dalam lingkup tertentu agar tidak terjadi konflik nama. Jadi namespace berguna untuk menghindari tabrakan nama yang sama, kita bisa memberi nama yang sama kepada class namun class tersebut harus berbeda namespace satu dengan yang lainnya
Kita modifikasi pada class.php
, kita akan tambahkan namespace
namespace Kendaraan; // tambahkan namespace
class Mobil
{
}
Import
Pada umumnya ketika kita tidak menggunakan namespace jika ingin melakukan import cukup dengan require
atau require_once
saja. Namun jika menggunakan namespace maka dibutuhkan tambahan yaitu use
.
Untuk mempraktikkan, buatlah file baru misal saja bmw.php
lalu isi dengan kode program berikut ini
namespace BMW;
require_once "class.php";
use \Kendaraan;
$bmw = new Kendaraan\Mobil("Silver", "BMW");
echo $bmw->warna;
Pada kode diatas kita tetap menggunakan require_once
untuk melakukan import namun bedanya ada tambahan yaitu use
. use
digunakan untuk memilih namespace mana yang akan kita pakai pada contoh diatas adalah Kendaraan
. Pada proses pembuatan objeknya pun sedikit berbeda, kita harus menyebutkan nama namespace-nya baru nama class-nya Kendaraan\Mobil
hal ini karena class Mobil
berada didalam namespace Kendaraan
Perlu dicatat jika kita menggunakan use
maka file php yang menggunakannya harus juga menggunakan namespace jika tidak maka akan ada warning. Seperti pada contoh pada kode diatas kita juga mendeklarasikan namespace-nya yaitu namepace BMW;
Visibilitas
Visibilitas mengacu pada tingkat aksesibilitas dari suatu property atau method dalam sebuah class. Ini menentukan seberapa jauh elemen-elemen program tersebut dapat diakses oleh kelas lain atau objek lain. Terdapat tiga visibilitas yaitu public, protected, dan private yang dimana masing masing memiliki ciri khas tersendiri
Oke langsung saja kita praktikkan, buat file baru bernama visibilitas.php
lalu isi dengan kode program berikut ini
class Profile
{
public $nama;
protected $nim;
public function __construct($nama, $nim)
{
$this->nama = $nama;
$this->nim = $nim;
}
private function sayHello()
{
echo "Halo nama saya " . $this->nama;
}
}
class Mahasiswa extends Profile
{
public function __construct($nama, $nim)
{
parent::__construct($nama, $nim);
}
}
$bobi = new Mahasiswa("Bobi", "23.99.9999");
Pada kode diatas kita membuat dua class yaitu Profile
dan Mahasiswa
. Class Profile
merupakan class parent
sementara class Mahasiswa
merupakan class child
yang akan mewarisi dari parent
-nya.
Public
Properti atau method yang memiliki visibilitas public
maka akan bisa diubah diluar class dan bisa diwariskan. Pada contoh kode diatas kita memiliki class parent
yaitu Profile
, class tersebut memiliki properti nama
yang bersifat public
yang berarti class tersebut bisa diubah diluar class dan juga bisa diwariskan. Oke mari kita praktikkan, masih dalam file visibilitas.php
lalu tambahkan kode berikut ini
echo $bobi->nama; // tampilan nama sebelum diubah
echo "<br>"; // <br> digunakan untuk membuat garis baru
$bobi->nama = "Bobi Bola"; // mengubah nama diluar class
echo $bobi->nama; // tampilan nama setelah diubah
echo "<br>";
Pada kode diatas kita mencoba mengakses properti nama
milik class Mahasiswa
yang dimana properti tersebut merupakan warisan dari class Profile
. Kita juga mengubah value dari properti tersebut, hal ini bisa kita lakukan karena properti nama
bersifat public. Oke sekarang buka localhost masing masing dan amati perubahannya
Protected
Properti atau method yang memiliki visibilitas protected
masih bisa diwariskan namun tidak bisa diakses dari luar class hal inilah yang membedakannya dengan public
. Jika kita memaksa untuk mengakses properti atau method dari luar class maka akan terjadi error. Oke mari kita praktikkan, masih dalam file visibilitas.php
lalu tambahkan kode berikut ini
echo $bobi->nim;
Pada kode diatas kita mencoba mengakses properti nim
dari luar class yang dimana akan menyebabkan error. Properti atau method yang memiliki visibilitas protected
hanya bisa diakses didalam class-nya sendiri. Mari kita praktikkan, ubah class Mahasiswa
seperti kode berikut ini
class Mahasiswa extends Profile
{
public function __construct($nama, $nim)
{
parent::__construct($nama, $nim);
}
public function ambilNIM()
{
// mengakses properti dari dalam class
return $this->nim;
}
}
Private
Properti atau method yang memiliki visibilitas private tidak bisa diwariskan dan tidak bisa bisa dikases dari luar class. Properti atau method hanya bisa diakses oleh pemiliknya saja. Seperti contoh pada class Profile
, class tersebut memiliki private
method sayHello()
yang dimana method ini hanya bisa diakses oleh class pemiliknya yaitu Profile
dan tidak bisa diwariskan. Mari kita buktikan, ubah class Mahasiswa
menjadi seperti ini
class Mahasiswa extends Profile
{
public function __construct($nama, $nim)
{
parent::__construct($nama, $nim);
}
public function ambilNIM()
{
return $this->nim;
}
public function panggilMethodSayHello()
{
// kita mencoba memanggil method milik parent
$this->sayHello();
}
}
echo $bobi->panggilMethodSayHello();
Sekarang buka localhost
lihat dan amati seperti apa error yang muncul
Penutup
Oke, sepertinya sudah cukup untuk materi kali ini. Teman-teman, jangan pernah terpaku hanya pada materi ini. Selalu terbuka untuk menjelajahi pengetahuan lebih luas. Kami hanya membuka pintu, sementara pilihan untuk tumbuh dan berkembang ada pada kalian. Jika ada kesulitan, kami siap memberikan bantuan. Sampai jumpa di pertemuan berikutnya, semoga perjalanan kalian penuh dengan keberhasilan! 👋🌟
Referensi
- Visibilitas : Tiga macam visibilitas
- Magic Method : Jenis jenis magic method bawaan PHP
- $this keyword : Contoh penggunaan keyword $this
- parent keyword : Contoh penggunaan keyword parent
- Abstract class : Pengertian abstract class dan contoh penggunaannya
- Interface : Pengertian interface dan contoh penggunaannya
- Enkapsulasi : Penggunaan Getter dan Setter untuk enkasulasi data