Изучая php дошел до изучния трейтов, изучив оф докумнтацию, и погуглив понял суть использования, но я так и не понял суть применения, ведь точно такого же результата можно добиться написав абстрактный класс и просто наслдоваться от него, приведу один из примеров который находил:
trait HelloWorld{
public function sayHello() {
return 'Привет ';
}
}
class NameMen{
public $name = 'Вася';
}
class GetInfo extends NameMen{
use HelloWorld;
public function getPiple(){
echo $this->sayHello() . $this->name;
}
}
$obj = new GetInfo();
$obj->getPiple(); //Привет Вася
вот один из них, и все остальные выглядят примерно также, суть из таких примеров я понял, в трейте объявляются методы которые предположительно нужно будет использовать много раз, и чтобы их не прописывать снова и снова там их и объявляешь, но как я написал выше того же эффекта можно добиться написав абстрактный класс и наследоваться от него, так зачем тогда нужны эти трейты, где их лучше использовать?