Saat mempelajari OOP, Anda akan mengenal tentang :
1. Encapsulation (Pembungkusan)
Encapsulation merupakan sebuah karateristik OOP dimana program
terbungkus (menjadi satu) data (property/field) dan prilaku
(fungsi/method), artinya lebih memperhatikan aspek internal daripada
aspek insternal
2. Polymorphison (Banyak Bentuk)
Polymorphison merupakan suatu karakter OOP dimana objek yang berbeda dapat memakai method dengan nama yang sama pada suatu class
3. Inheritance (Turunan)
Inheritance merupakan suatu karakteristik OOP dimana class (parent
class/base class) dapat diturunkan ke class yang lain (child
class/derived class) sehingga class anak dapat memiliki data atau
perilaku dari orang tuanya
Sintak-Sintak OOP
OOP pada PHP sama seperti konsep OOP pada biasanya, yaitu ada Class, Object, Property, Method, Inherintace, dan lain-lain
1. Class
class bila di ibaratkan adalah pembungkus untuk atribut/
property dan method dalam OOP. Adapun cara penulisan class adalah sebagai berikut :
class Manusia {
//Property dan method ditulis disini
}
Pada kode tersebut, kita membuat sebuah class bernama manusia yang akan
menjadi tempat property dan method yang akan dibuat, cara penulisan
class adalah dengan menggunakan huruf besar di awal.
2. Object
Setelah kita membuat class, kita akan berbicara tentang object. object
digunakan untuk suatu object berdasarkan class. Kalau di ibaratkan class
adalah cetakan dan object adalah hasil jadinya. contoh class adalah
manusia maka object adalah manusia itu sendiri , contoh nama manusia.
class Manusia {
//Property dan method ditulis disini
}
$mazdan = new Manusia(); //Object
cara penulisan object adalah dengan cara membuat variabel dan mengetikan sintak
new
3. Access Modifer
access modifer adalah hak akses yang ada di OOP. Hak Akses yang ada pada OOP ada tiga yaitu :
a. Public
Ketika Property/Method memiliki hak akses public, maka property/method
tersebut bisa diakses di luar class bisa berlangsung di akses dari
object.(untuk penjelasan property, method dan turunan ada dibawah
b. Protected
Ketika Property/Method memiliki hak akses Protected, maka
property/method hanya bisa di akses didalam class dan aka diturunkan ke
class turunan nya, , property/method tersebut tidak bisa di akses secara
langsung dari object/ di luar class
c. Private
Ketika property/method memiliki hak akses private, maka property/method
tersebut tidak bisa diakses di luar class dan juga tidak akan di
turunkan kepada class turunan nya
4. Property
Property adalah sebuah variable yang ada di dalam class. kalau di
ibaratkan sebagai manusia , property adalah segala sesuatu yang ada pada
tubuh nmanusia , seperti mata, telingan , mulut hidung, tangan, kaki,
dan sebagai nya
adapun cara penulisan property adalah dengan menuliskan hak akses/access
modifier , lalu buat nama variable/propertynya contohnya:
class Manusia {
public $tangan;
public $nama;
}
$mazdan = new manusia();
$tangan dan $nama adalah property yang ada dalam class Manusia, property
$nama dan tangan memiliki hak akses public, artinya bisa diakses secara
langsung dari object. Contohnya:
class Manusia {
public $tangan;
public $nama = "mazdanang";
}
$mazdan = new manusia();
echo $mazdan->nama;
Kira menampilan isi dari $nama yang ada di class Manusia, maka hasilnya "Aji Kamaludin";
5. Method
Method adalah fungsi yang ada di dalam class. method ini bila di
ibaratkan dalam object, contoh manusia , method adalah apa saja hal yang
bisa dilakukan oelh manusia, contohnya seperti makan, minum, berjalan,
melihat , dan lain-lain
Adapun cara penulisan method adalah hak akses dari fungsi, lalu tulis fungsinya. contoh sebagai berikut :
class Manusia {
public function membaca(){
echo "manusia membaca buku";
}
}
$mazdan = new Manusia();
$mazdan->membaca();
Dalam class, kita membuat method membaca, karena memiliki hak akses
public, maka membaca bisa dipanggil dari luar class, apabila dijalankan
hasilnya adalah "manusia membaca buku".
6. Setter and Getter
Setter adalah method yang digunakan untuk memasukan data ke dalam
property, sedangkan Getter adalah method yang digunakan untuk
mendapatkan data.
Fungsi dari setter dan getter adalah untuk memasukan dan mendapatkan
data dari property yang memiliki hak akses private/protected.adapun
contoh setter dan getter:
class Manusia {
private $nama
public function setNama($nama){ //contoh dari setter
$this->nama = $nama;
}
public function getNama(){ // contoh dari getter
return $nama;
}
}
$mazdan = new Manusia();
$mazdan->setNama('mazdan'); // memanggil setter
echo $mazdan->getNama(); // memanggil getter
7.Variable this
variable this($this) adalah sebuah variable yang menandakan kalau property atau method berada dalam class tersebut. Contohnya:
class Manusia{
private $nama
public function tampilkanNama(){
echo $this->nama; //contoh dari penggunaan $this
}
}
8. Constructor
Constructor adalah salah satu method bawaan dari OOP PHP dalam class
Constructor adalah fungsi yang paling pertama dijalankan ketika object
dibuat. constructor harus memiliki hak akses public.
Adapun cara penulisan constructor adalah dengan menuliskan __construct() contohnya:
class Manusia{
public fungtion __construct(){
echo "Fungsi Construct dipanggil";
}
}
// fungsi __construct dipanggil ketika object ini dibuat
$aji = new Manusia();
Maka hasil dari kode tersebut adalah "Funsing Construct dipanggil".
9. Destructor
Destructor adalah salah satu method bawaan dari OOP PHP dalam class
Destructor adalah fungsi yang paling akhir dijalankan ketika semua kode
sudah dijalankan. Destructor hrus memiliki hak akses publik
adapun cara penulisan destructor adalah dengan menuliskan __destruct();, contoh penulisanya :
class Manusia {
public function __destruct(){
echo ""Fungsi Destruct dipanggil";
}
}
$mazdan = new Manusia();
echo "hallo<br>";
echo "tampil ke dua<br>";
// fungsi destruct di panggil paling akhir file
10. Inheritance
inheritance/pewarisan merupakan salah satu konsep OOP, maksud dari
pewarisan adalah class anak/sub-class dapat memiliki sifat dari parent
class/master class. apabila di ibaratkan seperti manusia, maka anak akan
memiliki bawaan dari orang tua, baik itu sifat maupun penampilan.
apabila orang tuanya warna kulitnya hitam maka anaknya kemungkinan besar
punya kulit hitam.
Dalam pewarisan sifat ini, property dan method yang memiliki hak akses
public dan protected yang akan diturunkan kepada anak. pewarisan
dilakukan dengan menuliskan fungsi extends di class anak, contohnya
sebagai berikut:
class OrangTua{
protected $rambut = "hitam";
public funvtion tampilkan(){
echo "Warna rambutnya adalah :".$this->rambut;
}
}
class Anak extends OrangTua{
}
$mazdan = new Anak();
$mazdan->tampilkan();
Maka hasilnya adalah "Warna rambutnya adalah : hitam", karena class anda
memiliki property bawaan $rambut dan memiliki fungsi bawaan
tampilkan(). Apabilatidak di override/overriding (menulis ulang
fungsinya). maka fungsi bawaan dari class OrangTua yang akan berjalan.
Contoh dari overriding. tambahkan fungsi berikut di class anak :
class Anak extends OrangTua{
protected $rambut = "Merah";
public function tampilkan(){
echo "rambutnya: ".$this->rambut;
}
}
Maka hasilnya adalah "Rambutnya Merah";
11. Abstract Class
Abstract class sama seperti class biasa, bedanya dia harus memiliki anak
dan tidak bisa langsung dijadikan object, harus class anaknya yang
dijadikan object.
Adapun cara penulisannya menggunakan abstract class, contohnya sebagai berikut:
abstract class MakhlukHidup {
protected $mata = 2;
public function tampilkan(){
echo "Manusia memiliki ". $this->mata."Mata";
}
}
class Manusia extends MakhlukHidup{
}
$mazdan -> new Manusia();
$mazdan->tampilkan();
Maka hasilnya adalah "Manusia memiliki 2 mata". sekilas sama seperti
class biasa, tapi abstract class tidak bisa dibuat object misalnya new
MakhlukHidup();, maka akan terjadi kesalahan error.
12. Interface
Interface adalah suatu aturan method dan property apa saja yang harus
ada dalam suatu class, class harus melakukan overriding dari interface
yang digunakan, cara penggunaan dari interface yang digunakan, cara
penggunaan dari interface adalah dengan
"implements".
Apabila di ibaratkan dalam kehidupan sehari-hari, interface adalah
peraturan dari sekolah, class yang implements dari interface adalah
murid dari sekolah, apabila murid tidak mematuhi peraturan dari sekolah,
maka murid akan dikeluarkan. hal ini sama seperti jika class yang
melakukan implements tidak melalukan override di property atau method
yang ada di interface , maka akan terjadi error. adapun contoh
penggunaan interface sebagai berikut ;
interface Sopan {
public function menyapa();
}
class Manusia implements Sopan(){
public function menyapa() {
echo "Halo apa kabar ?";
}
}
$mazdan = new Manusia();
$mazdan -> menyapa();
Apabila class manusia tidak membuat method menyapa(), maka akan terjadi error. hasilnya adalah "H
alo apa kabar ?".
13. Scope Resolution Operator
Scope Resolution Operator adalah cara pemanggilan property/method dari class secara langsung tanpa perlu membuat sebuah object.
adapun cara penggunaannya adalah dengan menulis :: diantara class dan
property/method yang dipanggil, Class::method() atau Class::property.
contoh penggunaan dari resolution adalah sebagai berikut :
class Manusia {
public function menyapa(){
echo "Hallo apa kabar ?";
}
}
Manusia::manyapa();
maka hasilnya adalah
"Hallo apa kabar ?".
14. Self Keyword
self keyword digunakan untuk memenggil property/method milik dirinya
sendiri. cara penggunaanya menggunakan self::method(), contohnya sebagai
berikut ini:
class OrangTua{
public function tampilkan(){
self::tempat();
$this->tempat();
}
public function tempat(){
echo "ini fungsi orangtua<br>";
}
}
class Anak extends OrangTua{
public function tempat(){
echo "ini fungsi anak<br>";
}
}
$mazdan = new Anak();
$mazdan->tampilkan();
Maka hasilnya adalah:
"ini fungsi orangtua
ini fungsi anak"
jadi fungsi
self:: tersebut adlah untuk membaca method yang ada di class dimana
self:: itu dipanggil
15.Parent Keyword
Parent Keyword digunakan untuk memanggil property atau method milik
parent dari suatu class, cara penggunaanya menggunakan parent::method();
Dengan adanya parent keyword ini, kita bisa memanggil fungsi asli dari
parent class/master class, walaupun fungsi itu sudah di override oleh
class child/sub-class. contoh penggunaanya sebagai beikut:
class OrangTua{
public function tempat(){
echo "ini fungsi orang tua<br>";
}
}
class Anak extends OrangTua{
public function tampilkan(){
parent::tempat();
$this->tempat();
}
public function tempat(){
echo "Ini fungsi anak <br>";
}
}
$mazdan = new Anak();
$mazdan->tampilkan();
maka hasilnya akan :
"ini fungsi orangtua
ini fungsi anak"
jadi fungsi parent:: tersebut adalah untuk membaca method yang ada di class parent dari class anak.
Sumber : Buku Lokomedia - Bikin Framework PHP sendiri dengan teknik OOP & MVC , David Naista, Blog Mas Aji