PHP’de trait
, kod tekrarını önlemek için sınıflara ekleyebileceğiniz bir özellik koleksiyonudur. Trait’ler, çoklu kalıtımın sağladığı esnekliği sınıflara getirmek için kullanılır.
Örnek Kullanım:
<?php trait Logger { public function log($message) { echo "[LOG]: " . $message . PHP_EOL; } } trait ErrorHandler { public function error($message) { echo "[ERROR]: " . $message . PHP_EOL; } } class User { use Logger, ErrorHandler; public function createUser($username) { $this->log("Kullanıcı oluşturuluyor: $username"); // Kullanıcı oluşturma işlemleri... $this->log("Kullanıcı oluşturuldu: $username"); } } $user = new User(); $user->createUser("taner");
Açıklamalar:
use
anahtar kelimesi ile trait’ler sınıfa dahil edilir.- Birden fazla trait aynı anda kullanılabilir.
- Trait’ler içindeki metotlar doğrudan sınıfın metoduymuş gibi çağrılabilir.
Çakışma Durumları:
Eğer iki trait aynı isimde metot içeriyorsa, insteadof
ve as
anahtar kelimeleri kullanılarak çakışma çözülebilir:
<?php trait A { public function sayHello() { echo "Hello from A!"; } } trait B { public function sayHello() { echo "Hello from B!"; } } class MyClass { use A, B { B::sayHello insteadof A; A::sayHello as sayHelloFromA; } } $obj = new MyClass(); $obj->sayHello(); // Output: Hello from B! $obj->sayHelloFromA(); // Output: Hello from A!
Bu örneklerde, trait
kullanarak tekrar eden kodlardan kurtulup daha temiz ve yeniden kullanılabilir kod yazabilirsin.