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.