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
x
<?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
xxxxxxxxxx
<?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.