Penggunaan fungsi INHERINTANCE pada PHP

Sebenarnya fitur trait ini sudah ada sejak PHP 5.4, jadi bisa dibilang sudah lumayan lama mengingat sekarang versi PHP udah 5.7.

Table of Contents

  • Apa itu Trait?
  • Bagaimana cara kerja Trait?
  • Apa beda Trait dengan Interface?
  • Apa keuntungan dari traits?
  • Apa kelemahan dari Traits?
  • Apa fungsi traits?
  • Apa itu trait dalam PHP?
  • Apa itu trait pada laravel?
  • Kapan inheritance digunakan?
  • Apa itu inheritance pada PHP?
  • Jelaskan apa yang dimaksud dengan konsep inheritance?

Table of Contents

  • Apa itu Trait?
  • Bagaimana cara kerja Trait?
  • Apa beda Trait dengan Interface?
  • Apa keuntungan dari traits?
  • Apa kelemahan dari Traits?
  • Apa fungsi traits?
  • Apa itu trait dalam PHP?
  • Apa itu trait pada laravel?

Tapi saya sendiri baru memakai dan mencoba mengenalnya lebih dalam lagi sejak mulai mengutak-atik Laravel 5 yang lumayan banyak meng-implementasi trait di dalam codebase mereka. Kemunculan fitur Traits ini dilatarbelakangi oleh masalah dimana sebuah class PHP hanya bisa memiliki 1 inheritance saja.

Sedangkan misalnya saja jika 1 class bisa memiliki beberapa inheritance sekaligus tentu bisa mengurangi code duplication dimana bad practice dalam programming.

Trait itu seperti Mixin yang memberikan kamu kemampuan untuk menggabungkan beberapa Trait class kedalam sebuah class. Nah dalam artikel ini kita akan bahas mengenai apa itu Trait, contoh simple, kelebihan dan kekurangan dari Traits tersebut di dalam projek yang sedang kita kerjakan.

Apa itu Trait?

Trait secara simple adalah kumpulan dari beberapa method yang ingin kamu pakai di dalam class lain. Trait ini tidak bisa di instantiated sendiri, jadi harus di panggil dalam sebuah class seperti contoh di bawah ini.

trait Share{

	public function share($item)
	{

		return 'share this item';

	}

}

Kamu lalu bisa menggunakan trait di atas dalam sebuah class seperti contoh di bawah ini:

Class Post {

	use Share;

}


Class Comment{

	use Share;

}

Jika sekarang kamu membuat sebuah object untuk masing-masing class tersebut maka object ini akan mempunyai method share di dalamnya.

$post = new Post;

echo $post->share(); //return share this item


$comment = new Coment;

echo $coment>share(); //return share this item

Bagaimana cara kerja Trait?

Seperti contoh di atas, kedua object class Post dan Comment masing-masing memiliki method share walaupun tidak punya method share yang didefinisikan langsung di dalam class tersebut.

Cara kerja Trait hanya seperti copy dan paste code selama run time. Yang artinya code Trait Share dicopy ke dalam class Post dan Comment sehingga saat kamu membuat instant baru dari class tersebut maka method share() otomatis ada dalam class tersebut.

Apa beda Trait dengan Abstract Class?

Sebenarnya saya juga ga tau beda pastinya apa, tapi yang jelas Abstract class perlu yang namanya inheritance, sedangkan Trait tidak.

Apa beda Trait dengan Interface?

Trait kelihatannya sama dengan Interface. Keduanya sama-sama simple, ringkas, dan tidak bisa di pakai jika tidak dipanggil di dalam class. Tapi ada perbedaan antara Trait dengan Interface yaitu: Sebuah Interface seperti sebuah kontrak yang menekankan bahwa object ini mampu melakukan fungsi ini dan itu sedangkan sebuah Trait memberikan object tersebut kemampuan untuk melakukan fungsi ini dan itu.

// Interface

interface Sociable {

	public function like();

	public function share();

}

// Trait

trait Sharable {

	public function share($item)
	{

		// share this item

	}
}

// Class

class Post implements Sociable {

	use Sharable;

	public function like()
	{

	//

	}

}

Dalam contoh di atas, interface Sociable menegaskan bahwa postobject mampu melakukan fungsi like() dan share().

Kemudian Shareable traits mengimplementasikan share() dan like() method di Post class.

Jadi seperti yang kamu lihat dicontoh di atas, kita bisa memperkirakan apakah Post object mengimplementasikan Sociable interface. Kemudian Traits mendifinisikan sebuah fungsi yang bisa dipakai berulang-ulang yang bisa kita kombinasikan di dalam class lain yang sama.

$post = new Post; if($post instanceOf Sociable){ $post->share(‘hello world’); }

Apa keuntungan dari traits?

Keuntungannya adalah kamu bisa mengurangi code duplication dan juga mencegah class inheritance yang rumit yang tidak masuk akal dalam konteks aplikasi kamu. Jadi kamu bisa membuat sebuah Traits yang jelas dan ringkas kemudian memanggilnya dalam sebuah class.

Apa kelemahan dari Traits?

Nah penggunaan Traits juga ada beberapa kelemahan seperti yang akan dijelaskan di bawah ini.

Pertama: Traits bisa membuat sebuah class memiliki tugas yang terlalu banyak. Maksudnya dengan kemudahan memasukkan fungsi-fungsi ke dalam sebuah class lewat Trait, maka besar kemungkinan fungsi class tersebut sangat mudah melebar kemana-mana, dimana seharusnya sebuah class hanya memiliki 1 fungsi utama sesuai dengan single responsibility principle.

Kedua: kita tidak bisa melihat semua method yang ada di class tersebut, jadi agak sulit jika terdapat error karena nama method yang sama ataupun logic yang sama dalam sebuah fungsi.

Ketika Traits ini digunakan pada tempat yang tepat, bisa menjadi fitur yang sangat membantu. Tetapi bisa juga jadi alat yang praktis buat programmer males. Contohnya saja, Traits akan dengan mudah untuk memecahkan masalah dalam program yang kamu buat. Jadi tinggal implement trait dalam sebuah class tertentu maka kamu sudah bisa memanggil fungsi tersebut dari object class itu. Simple tapi susah untuk di trek nantinya.

Kesimpulan

Jadi pertanyaan besar adalah apakah kamu harus menggunakan Traits? Saya pikir kamu harus mempertimbangkan menggunakan Traits dalam proyek PHP kamu. Traits memberikan solusi yang bagus untuk ribetnya proses multiple pewarisan yang dapat timbul dalam single inheritance language seperti PHP.

Traits memungkinkan kamu untuk menambahkan fungsi ke dalam sebuah class dengan mudah.

Namun Traits bukanlah jawaban untuk semua masalah kamu. Menggunakan Traits secara tidak pas juga bisa mengarah pada masalah baru yaitu sebuah class memiliki banyak fungsi yang seharusnya tidak dimilikinya. Jadi be wise ya gais.

Apa fungsi traits?

Traits digunakan untuk mendeklarasikan metode yang dapat digunakan di banyak kelas. Sifat dapat memiliki metode dan metode abstrak yang dapat digunakan di banyak kelas dan metode dapat memiliki pengubah akses apa pun (public, private atau protected).

Apa itu trait dalam PHP?

Trait adalah suatu mekanisme dimana suatu class diizinkan untuk menggunakan kembali kode program (code reuse) yang berasal dari hirarki yang berbeda.

Apa itu trait pada laravel?

Trait adalah salah satu fitur pada pemrograman bahasa PHP yang sebetulnya bertujuan untuk menyelesaikan masalah yang dialami pada Class PHP..

Kapan inheritance digunakan?

Konsep inheritance digunakan untuk memanfaatkan fitur 'code reuse' untuk menghindari duplikasi kode program. Konsep inheritance membuat sebuah struktur atau 'hierarchy' class dalam kode program. Class yang akan 'diturunkan' bisa disebut sebagai class induk (parent class), super class, atau base class.

Apa itu inheritance pada PHP?

PHP – Apa itu Inheritance? Pewarisan atau Inheritance dalam OOP = Ketika kelas diturunkan dari kelas lain. Kelas anak akan mewarisi semua properti dan metode publik dan dilindungi dari kelas induk. Selain itu, ia dapat memiliki properti dan metodenya sendiri.

Jelaskan apa yang dimaksud dengan konsep inheritance?

Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman dimana sebuah class dapat 'menurunkan' property dan method yang dimilikinya kepada class lain.