Sebenarnya fitur trait ini sudah ada sejak PHP 5.4, jadi bisa dibilang sudah lumayan lama mengingat sekarang versi PHP udah sampai 7. 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.
Apa itu Traits?
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.
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?
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.
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.