Pengenalan
Seperti Bahasa pemrograman lain, PHP juga mempunyai pemrograman berbasis objek. pengertian menurut Om Wiki :
Pemrograman Berbasis Objek atau Object Oriented Programming (OOP) adalah sebuah tata cara pembuatan program (programming paradigm) dengan menggunakan konsep “objek” yang memiliki data (atribut yang menjelaskan tentang objek) dan prosedur (function) yang dikenal dengan method. (http://en.wikipedia.org/wiki/Object-oriented_programming).
Yah, dalam arti sederhananya adalah memecahkan masalah program dengan suati objek. Yaitu objek disini diumpakan dengan fungsi/function yang bisa berdiri sendiri. untuk membuat aplikasi objek/fungsi saling bertukar data.
Class/Object
Untuk lebih memahami OOP sebelumnya kita perjelas apa itu Class dan Object. Class adalah sekumpulan fungsi (metode) dan property (variabel) yang telah terorganisasi secara baik dan dapat digunakan berulang-ulang. Sedangkan Object adalah bentuk/hasil dari instansiasi kelas. Jadi untuk dapat menggunakan fungsi dan property dari kelas kita perlu menjadikannya sebuah objek.
Membuat Kelas
Dalam PHP untuk membuat sebuah kelas menggunakan kata kunci class yang kemudian diikuti nama kelasnya. Kemudian dalam class body (dalam tanda kurung kurawal) kita isi dengan property dan fungsi-fungsinya.
Class OOP PHP
<?php
class User{
<definisi class>
}
?>
class User{
<definisi class>
}
?>
Encapsulation
Enkapsulasi adalah sebuah tindakan yang dilakukan untuk menjaga nilai dari property kelas agar tidak dapat secara langsung diakses dari luar. Cara melakukan enkapsulasi itu adalah dengan memberi modifier access private ($nama, $harga) pada setiap property dalam kelas tersebut. Dengan begitu maka untuk dapat mengakses/mengubah nilai dari property sebuah kelas harus melalui metode yang ada (setNama($nama)).
Enkapsulasi :
<?php
class User{
private $nama;
private $sekolah;
function setNama($nama){
$this->nama = $nama;
}
}
?>
class User{
private $nama;
private $sekolah;
function setNama($nama){
$this->nama = $nama;
}
}
?>
Membuat Object
Seperti yang dijelaskan sebelumnya, objek merupakan hasil instansiasi dari suatu kelas. Dalam PHP pembuatan objek tersebut dilakukan dengan cara menulis tag :
Membuat Object :
<?php
<variable> = new <namakelas>;
include"<lokasi file PHP berisi kelas>";
$d = new User();
}
?>
<variable> = new <namakelas>;
include"<lokasi file PHP berisi kelas>";
$d = new User();
}
?>
Anggota Kelas dan Scope
Anggota Kelas adalah menunjuk pada property dan metode suatu kelas. Sedangkan Scope adalah deklarasi atau batasan yang menentukan dari mana suatu anggota dapat diakses.
- Public
Merupakan scope default untuk semua property dan metode dalam suatu kelas. Dengan public anggota kelas tersebut dapat diakses dari script manapun.
- Private
Scope private ini berarti anggota itu hanya bisa diakses dalam kelas tersebut. Tanpa bisa dari luar ataupun turunannya.
- Protected
Scope ini sama dengan private, bedanya anggota tersebut dapat juga diakses oleh kelas turunannya.
Magic Method/Metode Ajaib
Yang disebut metode ajaib adalah metode-metode khusus yang secara langsung dapat berjalan secara otomatis. Metode tersebut adalah :
- Konstruktor
konstruktor adalah pembangun. Yaitu metode yang akan berjalan ketika kelas tersebut d-instansiasi (new). Untuk menambahkan konstruktor tersebut dapat ditulis dengan cara membuat fungsi : __construct().
- Destruktor
Seperti layaknya konstruktor, destruktor ini adalah kebalikan dari konstruktor. Destruktor berjalan ketika objek yang dibuat tersebut dibebaskan (release) yaitu ketika objek tersebut di unset (variable diberi nilai null). Tag-nya ditulis dengan cara : __destruct().
- Metode Getter
Metode ini adalah metode yang dijalankan secara otomatis ketika adanya usaha pembacaan variabel yang tidak dikenal (tidak ada) atau variabel private. Metode ini memiliki 1 parameter, yaitu nama variabel yang dicari.
- Metode Setter
Metode ini adalah metode yang dijalankan secara otomatis ketika adanya usaha pengisian nilai ke variabel yang tidak dikenal (tidak ada) atau variabel private. Metode ini memiliki 2 parameter, yaitu nama dan nilai dari variabel yang dicari.
<?php
class User{
private $nama;
private $sekolah;
function __construct(){
$this->nama = Amin Yusuf;
$this->sekolah = SMKN 2 BANDUNG JUARA;
}
function __destruct(){
unset($this->nama);
unset($this->sekolah);
}
function setUser($nama,$sekolah){
$this->nama = $nama;
$this->sekolah = $sekolah;
}
function getNama(){
return "Nama Saya $this->nama";
}
function getSekolah(){
return "Saya Sekolah di $this->sekolah";
}
function __get($var){
echo "Variable $var Tidak dikenal...!";
}
function __set($var,$nil){
echo "Variable $var Tidak dikenal...!";
echo "Nilai $nil Tidak diproses...!";
}
}
?>
class User{
private $nama;
private $sekolah;
function __construct(){
$this->nama = Amin Yusuf;
$this->sekolah = SMKN 2 BANDUNG JUARA;
}
function __destruct(){
unset($this->nama);
unset($this->sekolah);
}
function setUser($nama,$sekolah){
$this->nama = $nama;
$this->sekolah = $sekolah;
}
function getNama(){
return "Nama Saya $this->nama";
}
function getSekolah(){
return "Saya Sekolah di $this->sekolah";
}
function __get($var){
echo "Variable $var Tidak dikenal...!";
}
function __set($var,$nil){
echo "Variable $var Tidak dikenal...!";
echo "Nilai $nil Tidak diproses...!";
}
}
?>
Inheritance
Inheritance atau pewarisan adalah pembuatan kelas turunan dari sebuah kelas (superclass/parent dan subclass/child).caranya adalah dengan menggunakan tag extends.
Inheritance :
<?php
include "kelas.php";
class AsalSekolah extends User{
<definisi class>
}
?>
include "kelas.php";
class AsalSekolah extends User{
<definisi class>
}
?>
Polymorphism
Polymorfisme adalah fitur yang paling penting dalam OOP. Dengan polymorfisme kita dapat mempersingkat kode program. Dengan metode inheritance kita dapat membuat kelas yang merupakan turunan dari kelas yang lain. Kita dapat menggunakan metode dari kelas induk ataupun dapat juga menggembangkannya dengan mudah.
<?php
include "kelas";
class NilaiUN extends AsalSekolah{
private $mtk;
private $bind;
private $bing;
private $ipa;
include "kelas";
class NilaiUN extends AsalSekolah{
private $mtk;
private $bind;
private $bing;
private $ipa;
function setNilai($mtk,$bind,$bing,$ipa){
$this->mtk = $mtk;
$this->bind = $bind;
$this->bing = $bing;
$this->ipa = $ipa;
}
function getNilaiMTK(){
return "Matematika = $this->mtk";
}
function getNilaiBIND(){
return "Bahasa Indonesia = $this->bind";
}
function getNilaiBING(){
return "Bahasa Inggris = $this->bing";
}
function getNilaiIPA(){
return "Ilmu Pengetahuan Alam = $this->mtk";
}
}
?>
Variabel Anggota Static
Dalam pembuatan objek suatu kelas, kita dapat mempunyai variabel yang nilainya berbeda-beda untuk tiap objek yang dibuat dari kelas yang sama. Tetapi sebuah kelas dapat mempunyai variabel yang nilainya dapat dipakai bersama oleh semua objek hasil instansiasinya. Variabel itu disebut variabel statis atau sering juga disebut variabel kelas.
<?php
class Jurusan{
private static $mskTKJ = 0;
private static $mskRPL = 0;
private static $mskAM = 0;
private static $mskMM = 0; private $ket = "-";
private $nama;
function setJurusan($nama,$jurusan){
$this->nama = $nama;
if ($jurusan=="tkj"){
self::$mskTKJ++;
}
elseif($jurusan=="rpl"){
self::$mskRPL++;
}
elseif($jurusan=="am"){
self::$mskAM++;
if($this->nama=="Maya Dania"){
$this->ket="masuk hatiku ajh <3 May";
}
}
elseif($jurusan=="mm"){
self::$mskMM++;
}
}
function tampil(){
return "Masuk TKJ = "self::$mskTKJ;
return "Masuk RPL = "self::$this->mskRPL;
return "Masuk AM = "self::$this->mskAM;
return "Masuk MM = "self::$this->mskMM;
return "Nama Anda = $this->nama";
return "Ket : $this->ket";
}
}
?>
class Jurusan{
private static $mskTKJ = 0;
private static $mskRPL = 0;
private static $mskAM = 0;
private static $mskMM = 0; private $ket = "-";
private $nama;
function setJurusan($nama,$jurusan){
$this->nama = $nama;
if ($jurusan=="tkj"){
self::$mskTKJ++;
}
elseif($jurusan=="rpl"){
self::$mskRPL++;
}
elseif($jurusan=="am"){
self::$mskAM++;
if($this->nama=="Maya Dania"){
$this->ket="masuk hatiku ajh <3 May";
}
}
elseif($jurusan=="mm"){
self::$mskMM++;
}
}
function tampil(){
return "Masuk TKJ = "self::$mskTKJ;
return "Masuk RPL = "self::$this->mskRPL;
return "Masuk AM = "self::$this->mskAM;
return "Masuk MM = "self::$this->mskMM;
return "Nama Anda = $this->nama";
return "Ket : $this->ket";
}
}
?>
Metode Anggota Static
Seperti variabel statis, kelas juga dapat memiliki metode statis. Yaitu metode yang dapat dipakai oleh semua objek. Metode ini adalah metode yang dimiliki oleh kelas, jadi untuk menggunakan cukup dengan menggunakan nama kelas dan metodenya tanpa perlu meng-instansiasi kelas tersebut dahulu. Karenanya untuk mengakses anggota dari metode statis tidak bisa menggunakan kata kunci this->metode(), melaikan harus dengan self::<metode>.
<?php
class Jurusan{
static function hari($ke){
$days = array("Senin","Selasa","Rabu","Kamis","Jumat","Sabtu","Minggu");
if($ke<8 AND $ke>0){
$hari = $days[$ke-1];
}else{
$hari = "Input Salah";
}
return $hari;
}
}
?>
class Jurusan{
static function hari($ke){
$days = array("Senin","Selasa","Rabu","Kamis","Jumat","Sabtu","Minggu");
if($ke<8 AND $ke>0){
$hari = $days[$ke-1];
}else{
$hari = "Input Salah";
}
return $hari;
}
}
?>
Menyalin Objek
Dalam peng-instansiasi-an sebuah kelas, dilakukan pembuatan objek dengan suatu lokasi memori tertentu. Dalam beberapa hal perlu dilakukan penduplikatan objek tertentu. Untuk melakukannya kita dapat menggunakan perintah <$obj2> = clone <$obj1>. Maka akan dibuatkan objek kedua yang isinya sama dengan objek pertama.
Kelas parent:: dan self::
Kelas parent:: dalam PHP digunakan untuk menyebut super kelas dari sebuat kelas turunan. Fungsi ini digunakan untuk memudahkan OOP. Fungsi ini biasa digunakan dalam pemanggilan konstruktor atau metode milik super kelas. Sedangkan self:: adalah seperti yang dijelaskan diatas, fungsi ini digunakan untuk menyebut kelas dalam penggunaan anggota kelas statis.
Operator Instanceof
Operator ini adalah sama dengan is_a() dalam OOP lain. Fungsinya adalah untuk mengetahui apakah suatu kelas adalah turunan dari kelas yang disebutkan.
<?php
function tampil($objek){
if($objek instanceof NilaiUN){
$nilai = getNilaiUN();
}else{
echo "Objek tak dikenal";
}
return $nilai;
}
}
?>
function tampil($objek){
if($objek instanceof NilaiUN){
$nilai = getNilaiUN();
}else{
echo "Objek tak dikenal";
}
return $nilai;
}
}
?>
Metode dan Kelas Abstrak
Fungsi dari metode dan kelas abstrak adalah dalam pembuatan keseragaman antara sub kelas dari kelas abstrak. Kelas abstrak tidak dapat di-instansiasi melaikan untuk di-extends (penurunan). Dengan adanya metode abstrak ini maka kita harus meng-override metode abstraknya itu untuk dapat menjadi turunan dari kelas tersebut. Dengan begitu akan ada semacam standarisasi untuk turunan dari kelas tersebut.
Interface
Interface adalah kumpulan dari metode-metode yang semuanya abstrak. Bisa dikatakan hampir sama dengan kelas abstrak. Dalam hal ini interface memiliki konstanta tapi bukan variabel dan metode tanpa implementasi, jadi fungsinya adalah agar kelas yang meng-implementasi-nya melakukan override atas semua metodenya. Hubungannya dengan kelas peng-implementasi-nya adalah implements. Jadi interface difungsikan sebagai penghubung lingkungan luar dengan sebuah kelas.
<?php
interface aku{
function job(){
class aktor implements aku(){
function job(){
echo"aku adalah aktor";
}
}
}
}
?>
interface aku{
function job(){
class aktor implements aku(){
function job(){
echo"aku adalah aktor";
}
}
}
}
?>
Metode Final
Metode final adalah metode yang tidak dapat di-override oleh kelas turunannya.
Fungsi __autoload()
Fungsi ini adalah fungsi yang akan dijalankan otomatis untuk meng-include-kan kelas yang diperlukan. Jadi kita tidak perlu menulis include semua nama kelas yang dibutuhkan, namun cukup menyebutkan letak kelas-kelas disimpan dan ketika dibutuhkan fungsi ini akan menggunakannya.
<?php
function __autoload($kelas){
require_once
$_SERVER["DOCUMENT_ROOT"]."/kelas/$kelas.php";
}
}
?>
function __autoload($kelas){
require_once
$_SERVER["DOCUMENT_ROOT"]."/kelas/$kelas.php";
}
}
?>