@fsgdoterr

Зачем нужны трейты в php?

Изучая 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(); //Привет Вася

вот один из них, и все остальные выглядят примерно также, суть из таких примеров я понял, в трейте объявляются методы которые предположительно нужно будет использовать много раз, и чтобы их не прописывать снова и снова там их и объявляешь, но как я написал выше того же эффекта можно добиться написав абстрактный класс и наследоваться от него, так зачем тогда нужны эти трейты, где их лучше использовать?
  • Вопрос задан
  • 354 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Трейты - это миксины, которые могут добавляться к классам в различных комбинациях. Попробуйте повторить на чистых классах
trait Harvestable {
  function harvest() { }
}
trait Waterable {
  function water() { }
}
trait Repottable {
  function repot() { }
};
class Plant { }
class Vegetable extends Plant {
  use Waterable;
  use Harvestable;
}
class Fruit extends Plant {
  use Waterable;
  use Harvestable;
  use Repottable;
}
class Succulent extends Plant {
  use Repottable;
}
Ответ написан
Комментировать
colonel
@colonel
Разработчик PHP, Laravel
От абстрактного класса вы можете наследоваться только от одного, а трейтов можно использовать сколько угодно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
22 апр. 2024, в 16:15
18000 руб./за проект
23 апр. 2024, в 16:55
10000 руб./за проект