Mengapa lebih bagus ngoding PHP pakai Class (OOP)?

Jadi ceritanya ada banyak programming languages, ada banyak programmer, banyak kepala, banyak kebiasaan :v

Beberapa developer mulai ngoding dengan mendisain object-object yang kira-kira dibutuhkan dalam projectnya dan mulai menulis object tersebut ke dalam beberapa class. Ada juga developer yg menulis class karena melihat contoh orang lain yg pake class tanpa tau fungsinya apa. Ada juga yg memakai class tapi menggunakan class orang lain yg sudah ada, jadi tinggal pakai. Tapi ada juga yang ga mau nulis class, cukup pake function minimal atau menulis php code-nya sembarangan saja asal project kelar. Jadi kamu yang mana gais?

Ga ada yg salah dengan style ngoding kalian tapi coba baca lebih lanjut kenapa kalau pake class atau OOP model lebih bagus dalam men-development project PHP kamu.

Introboys

Sebenernya agak ragu buat nulis artikel ini karena rasanya gak penting lagi apalagi konsep tentang OOP ini rasanya sudah umum di ketahui oleh banyak programmer PHP. Tapi setelah dapet project-an bug fix di salah satu php project milik tetangga yang tidak pakai class sama sekali, rasanya mungkin masih banyak yg perlu di jelaskan tentang kelebihan pakai model OOP ini, khususnya keuntungan pakai object-object dalam sistem yang kamu buat. Nah setelah ditanya dari beberapa reference tentang mengapa banyak yang malas memakai class atau OOP model ini:

  1. Pakai class ribet, nanti kalau banyak class yang di panggil bakalan membuat applikasi menjadi lambat katanya(?). Jadi mending pake global variable aja, buat fungsi aja udah cukup bro.
  2. “Kamu tau Worpress kan bro? katanya corenya itu ditulis hanya dengan global function dan variable, ga ada masalah tuh kan tanpa class, malah jadi cms ngetop?” Ok bro, tapi kamu tau gak kalau WP pelan2 udah mulai adaptasi ke object oriented approach loo walaupun sebagian besar codenya masih berupa global code.
  3. Beberapa orang mungkin udah memakai OOP tapi saat ditanya kenapa, mereka tidak yakin kenapa pakai OOP. Mereka hanya mengikuti best practice dari orang lain aja. Fine, mengikuti best pracetice adalah langkah awal kamu buat jadi programmer yang baik (bukan yang master ya). Dengan mengikuti best practice, artinya kamu tau apa yang kamu lakukan dan punya kontrol penuh dan panduan yg baik dalam ngoding.

Sebenarnya masih banyak lagi sih tentang perdebatan opini ini. Tapi cukup segitu aja dah gais.

Apa itu OOP classes?

<?php
class Database {
	
	var $result;

	function execute($query){
		$this->result = mysql_query($query);

		return $this->result !== false;
	}

	function display(){
		while($row = mysql_fetch_array($this->result)){
			echo $row;
		}
	} 

}

Nah di atas itu contoh sebuah class ceritanya. Class itu terdiri dari function-function dan beberapa variable yang menjadi satu kesatuan. Jadi dasar dari OOP itu bagi yg belum tahu adalah: sebuah Objects dimana menjadi sebuah wadah/tempat yang berisi beberapa function dan variable yang menjelaskan tentang sebuah kesatuan atau fungsi tertentu. Nah fitur ini biasa disebut encapsulation atau istilahnya di bungkus, yang artinya dalam sebuah object mungkin berisi lebih dari 1 function dan variable yang nantinya dapat bekerja sama sesuai dengan Object apa itu yang dibuat.

Misalnya kamu punya sebuah object Produk di toko online. Nah object Produk ini mungkin berisi beberapa variable seperti nama, berat, warna gambar, ukuran dan lainnya. Selain itu object Produk mungkin juga memiliki function yang berfungsi untuk memanipulasi variable-variable tersebut sehingga object Produk ini adalah suatu kesatuan yang merupakan wadah informasi dari produk di toko online kamu beserta fungsi fungsinya.

Biar lebih jelas berikut contoh object Produk (obejct ini dalam OOP berbentuk sebuah class)

<?php
class Produk {
	
	var $nama;
	var $warna;
	var $berat;
	var $deskripsi;
	var $harga;

	function add($nama,$warna,$berat,$deskripsi,$harga){
		$this->nama = $nama;
		$this->warna = $warna;
		$this->berat = $berat;
		$this->deskripsi = $deskripi;
		$this->harga = $harga;
	}

	function display(){
		echo 'Detail Produk <br>';
		echo 'Nama : '.$nama. '<br>';
		echo 'Warna : '.$warna. '<br>';
		echo 'Berat : '.$berat. '<br>';
		echo 'Deskripsi : '.$deskripsi. '<br>';
		echo 'Harga : '.$harga. '<br>';
	}
}

Terus kalau sudah buat class selanjutnya bagaimana? Nah kamu bisa manggil class tersebut menjadi beberapa instance tersebut dengan new operator. Jadi kamu bisa membuat banyak instant dari produk tersebut hanya dengan 1 class saja. Nah contohnya di bawah ini gais:

//Instance 1
$produk_a = new Produk();
$produk_a->add('Produk A','Merah','100','Ini adalah produk a','1000');
$produk_a->display();

//Instance 2
$produk_b = new Produk();
$produk_b->add('Produk B','Hitam','300','Ini adalah produk b','1000');
$produk_b->display();

Dengan membuat Class mengijinkan kamu untuk memanipulasi informasi di dalamnya tanpa harus menggunakan global variable untuk berbagi informasi antara class function. Seperti class produk di atas, kamu bisa mempunyai class dengan fungsi untuk menambahkan produk dengan nama produk a dan menampilkan produk tersebut di fungsi display dengan memanggil class variable $nama.

Object Oriented Programming menyediakan fitur lainnya yg ga kalah penting yaitu Inheritance, yang memungkinkan kamu untuk membuat class baru yang mewarisi fungsi class yang sudah ada sebelumnya. Tapi, saya tidak akan menjelaskan lebih jauh tentang inheritance disini, kita focus ke kenapa pakai oop saja.

Kenapa lebih baik develop PHP project kamu dengan OOP Classes?

Alasan utamanya adalah kamu membuat kode kamu lebih terorganisasi sehingga jika terjadi masalah atau bug kamu lebih cepat memperbaikinya. Selain itu jika kamu menggunakan global variable atau function, kamu hanya bisa memakai nama fungsi atau variable itu 1 x aja, jadi jika kamu tidak sengaja membuat 2 buah fungsi yang memiliki nama yang sama, maka sudah pasti akan membuat error. Jadi dengan membungkus variable dan function itu ke dalam class, kamu bisa menghindari error saat menggunakan function atau variable dengan nama yang sama. Ini juga berfungsi saat kamu menggunakan class lain milik orang lain, karena kita tidak sepenuhnya tahu apa saja isi dari class tersebut, jadi dengan membungkus global variable dan fungsi kamu dalam sebuah class, kamu bisa terhindar dari konflik penamaan ini.

Lalu bagaimana dong kalau aku mau buat class sendiri agar tidak konflik dengan class milik orang lain dalam project ku ini? Kemungkinan terdapat nama class yang sama dalam 1 project mungkin kecil, tapi mungkin saja misalnya kamu menggabungkan 2 buah framework dalam 1 project, hal ini mungkin saja terjadi. Jadi untuk mengatasi masalah ini, kamu bisa memakai namespaces dalam class kamu, sehingga kamu tidak akan mengalami masalah konflik penamaan class lagi.

Kesimpulannya, class membantu kamu untuk mengorganisasi code kamu dengan lebih baik, mempermudah proses pencarian bug/error, menghidari konflik dalam penaman variable dan fungsi dan yang paling penting kamu bisa menggunakan kembali kode kamu di beberapa bagian dari project kamu tanpa harus menulis ulang code tersebut dari awal. Ini yang sering di sebut sebagai reusable code.

Kapan OOP classes tidak terlalu penting?

Jadi sebagai programmer kalian juga harus tetap bijak dalam ngoding ya, meskipun kalian bisa saja membuat sebuah class dalam waktu singkat, ada beberapa kasus dimana class tidak terlalu dibutuhkan. Sebagai contoh jika kamu mau membuat sebuah code yang rasanya tidak akan digunakan berulang-ulang di dalam project kau, maka penggunaan class tentu sedikit percuma tapi buka berarti salah ya. Tapi ada baiknya jika kamu sedikit melihat ke masa depan, misalnya jika nanti fungsi yang kamu buat akan digunakan secara lebih komplek di bagian lain di project kamu, mungkin ada baiknya kamu menggunakan class saja mulai sekarang sekalian jaga-jaga toh ga ada yang rugi juga kan.

Bagaimana dong caranya migrasi dari global code aku ke OOP classes?

Beberapa orang beranggapan global function dan variable sebagai procedural code. FYI: Procedure itu kata lain dari function ya. Class juga memiliki beberapa function dan variable jadi rasanya proses migrasi tersebut tidak terlalu sulit. Mungkin kamu bisa melakukan beberapa langkah-langkah berikut:

  1. Coba pisahkan kira-kira project kamu itu punya object apa saja di dalamnya.
  2. Buat masing-masing object tersebut berupa class dan masukkan fungsi-fungsi dan variable dii dalamnya
  3. Jika ada beberapa fungsi atau variable yang tidak perlu di pakai di tempat lain ada baiknya tidak usah di masukkan ke dalam class, tapi dijadikan sebagai global function saja.

Selanjutnya mulai deh penulisan class kamu. Sebagai contoh jika kamu punya sebuah global variable $variable_name dan sebuah fungsi function_name, dan kamu akan memasukkannya ke dalam Class1 misalnya.

Example global code:

$variable_name = 'foo';

function function_name()
 {
   global $variable_name;

   echo $variable_name;
 }

 function_name();

Menjadi:

$obj = new Class1;
$obj->function_name();

Simple bukan? Sebenarnya masih banyak lagi hal yang perlu di bahas tentang OOP seperti constructor, setter, getter dan yang lainnya. Mungkin kita akan bahas di artikel selanjutnya tentang OPP class. Saya rasa ini sudah cukup jadi dasar buat kamu untuk migrate code-code lama kamu itu menjadi lebih rapi dengan OOP.

Ending

Tokoh tokoh yang ada di dalam artikel ini mungkin fiktif belaka dan sebagian besar adalah berupa opini pribadi. Bagi kamu yang uda expert dengan OOP, artikel ini ditujukan buat teman-teman yang masih menggunakan procedural code supaya bisa mengerti tentang kelebihan OOP dan manfaatnya dalam development project PHP selanjutnya. Seperti yang saya katakan sebelumnya, tidak ada cara yang salah, yang ada adalah lebih baik dan kurang baik saja. Jadi jika ada best practice yang lebih baik, tidak ada salahnya jika mengikuti cara yg lebih baik untuk efisiensi kalian dalam ngoding.

Last quotes gais..

Please follow and like us:
Tags: PHP

Hi, Saya Agus Yusida

Hello, perkenalkan saya Agus Yusida, seorang freelancer programmer, pernah membuat startup dan suka mencoba hal-hal baru. Jika ada pertanyaan bisa DM saya di IG @yusidajohn untuk fast respond. Jangan lupa like facebook ngide.net ya!

Related Article