Pengenalan Object Oriented Programming pada Bahasa PHP

Muhammad Pandu Royyan
Amikom Computer Club
8 min readFeb 21, 2024

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

--

--