Hari 12: Trait — Reuse Kode
55 min
Last updated 09 Apr 2026
Apa itu Trait?
Trait adalah mekanisme untuk berbagi method antar class tanpa inheritance. PHP tidak mendukung multiple inheritance, tapi bisa menggunakan banyak trait.
trait HasTimestamps {
private string $createdAt;
private string $updatedAt;
public function setCreatedAt(): void {
$this->createdAt = date("Y-m-d H:i:s");
}
public function getCreatedAt(): string {
return $this->createdAt ?? "belum diset";
}
}
trait HasSlug {
public function generateSlug(string $judul): string {
return strtolower(str_replace(" ", "-", $judul));
}
}
class Post {
use HasTimestamps, HasSlug; // bisa pakai banyak trait
public string $judul;
public function __construct(string $judul) {
$this->judul = $judul;
$this->setCreatedAt();
}
public function getSlug(): string {
return $this->generateSlug($this->judul);
}
}
$post = new Post("Belajar PHP Trait");
echo $post->getSlug() . "\n"; // belajar-php-trait
echo $post->getCreatedAt() . "\n"; // (tanggal sekarang)
💡 Trait cocok untuk kode yang dipakai banyak class berbeda yang tidak memiliki hubungan inheritance logis.
💡
Notice: Trait mirip "copy-paste" method ke dalam class. Gunakan "use TraitName;" di dalam class.
Assignment
Buat trait Logger dengan method log(string $msg): void yang mencetak "[LOG] $msg". Buat class App dan class Database yang keduanya use Logger. Buat instance keduanya dan panggil log() dengan pesan berbeda.
Expected output:
[LOG] Aplikasi dimulai
[LOG] Koneksi berhasil
PHP
index.php
Solution
Output