Petunjuk:
RUN di dalam editor untuk menjalankan program.<?php
trait Logger {
public function catatLog($pesan) {
$className = __CLASS__;
echo date("Y-m-d H:i:s") . " [{$className}] {$pesan}\n";
}
}
class Pengguna {
use Logger;
public $nama;
public function __construct($nama) {
$this->nama = $nama;
$this->catatLog("Pengguna '{$this->nama}' telah dibuat.");
}
}
class KelompokPengguna {
use Logger;
public $daftarPengguna = [];
public function tambahPengguna(Pengguna $pengguna) {
$this->daftarPengguna[] = $pengguna;
$this->catatLog("Pengguna '{$pengguna->nama}' ditambahkan ke kelompok.");
}
}
// Penggunaan
$kelompok = new KelompokPengguna();
$kelompok->tambahPengguna(new Pengguna("Aldo"));
?>
Pada contoh di atas, trait Logger digunakan oleh class Pengguna dan KelompokPengguna, sehingga kedua class bisa menggunakan method catatLog() tanpa harus menulis ulang kode tersebut. Ini memudahkan pemeliharaan kode dan mendukung reuse logika yang umum digunakan di berbagai class.