Junior — Middle
Kako rešiti konflikt između traits u kodu?
sobes.tech АИ
Одговор од АИ
U PHP-u, konflikt između traits-a nastaje kada dva ili više traits-ova sadrže metode sa istim imenima, a klasa koja koristi te traits-ove ne zna koju metodu da izabere. Da biste rešili takav konflikt, koristite operatore insteadof i as unutar bloka use u klasi.
Primer:
trait A {
public function hello() {
echo "Zdravo iz A";
}
}
trait B {
public function hello() {
echo "Zdravo iz B";
}
}
class MyClass {
use A, B {
B::hello insteadof A; // Koristi metodu hello iz trait-a B
A::hello as helloFromA; // Preimenuje metodu iz A za zaseban poziv
}
}
$obj = new MyClass();
$obj->hello(); // Ispisaće: Zdravo iz B
$obj->helloFromA(); // Ispisaće: Zdravo iz A
Tako insteadof omogućava izbor koja metoda će biti korišćena u slučaju konflikta, a as daje alternativno ime metodi, omogućavajući pozivanje obe.