PHP Oop Lanjut Traits Interfaces Abstract Solid Principles
Definisi
PHP OOP lanjut mencakup trait (reuse kode horizontal), interface (kontrak), abstract class (basis parsial), dan prinsip SOLID untuk desain yang mudah dirawat.
Kapan dipakai
Pakai saat aplikasi tumbuh dan butuh struktur yang bisa diuji & diperluas tanpa rewrites. Trait untuk share method antar class tak berhubungan; interface untuk mendekoupling.
Cara kerja
Trait
trait Timestamps {
public function createdAt() { return date('Y-m-d'); }
}
class Post { use Timestamps; }Interface + implementasi
interface Repository {
public function find(int $id): ?array;
}
class UserRepo implements Repository {
public function find(int $id): ?array { /* ... */ }
}Abstract
abstract class Model {
abstract public function save();
}SOLID singkat
- Single Responsibility: satu alasan berubah.
- Open/Closed: terbuka tambah, tutup modifikasi.
- Liskov: subclass bisa ganti parent.
- Interface Segregation: interface kecil spesifik.
- Dependency Inversion: depend pada abstraksi, bukan implementasi.
Struktur alur
Loading diagram...
Catatan implementasi
- Trait bisa konflik nama; pakai
insteadof/asuntuk resolusi. - Type hint
?array(nullable) butuh PHP 7.1+. - Dependency injection: terima interface di constructor, bukan
newdi dalam method. - Autoloading via Composer PSR-4 menggantikan
requiremanual.
Kesalahan umum
- Trait jadi "class global": menumpuk logic; trait sebaiknya kecil & fokus.
- Interface gemuk: langgar interface segregation.
- new di dalam method: sulit test; inject dependency.
- Abuse abstract: terlalu dalam hierarchy memberatkan.